<div>Flat contracts includes more things than contracts. For example:</div><div><br></div><div><div>[robby@yanpu] ~/git/plt/collects/scribblings/reference$ racket</div><div>Welcome to Racket v5.3.1.9.</div><div>&gt; (flat-contract? &#39;x)</div>
<div>#t</div><div>&gt; (procedure? &#39;x)</div><div>#f</div><div><br></div><div>The flat-contract function is a holdover from the days when flat contracts weren&#39;t able to be used directly as predicate functions.</div>
<div><br></div><div>I&#39;ll push a clarification to the docs for flat-contract.</div><div><br></div><div>Robby</div><br>On Tuesday, December 4, 2012, Harry Spier  wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Dear list members,<br>
<br>
 I&#39;m a little confused about the difference between the definition of a<br>
 predicate and the definition of a flat contract.  If someone could<br>
 clear that up I&#39;d appreciate it.<br>
<br>
 1) AT ALL PLACES in the documentation where it uses the term<br>
 &quot;predicate&quot; does that mean a procedure that takes a single value and<br>
 returns a boolean?  I inferred that from:<br>
<a href="http://docs.racket-lang.org/reference/function-contracts.html#(def._((lib._racket/contract/base..rkt)._predicate/c))" target="_blank">http://docs.racket-lang.org/reference/function-contracts.html#(def._((lib._racket/contract/base..rkt)._predicate/c))</a><br>

<br>
 But from the section of the Racket Guide &quot;Rolling your own contracts&quot;<br>
<a href="http://docs.racket-lang.org/guide/contract-func.html#(part._contracts-own)" target="_blank">http://docs.racket-lang.org/guide/contract-func.html#(part._contracts-own)</a><br>
 I inferred that a procedure that takes a value and returns a boolean<br>
 can be used as a contract, so is a predicate always a flat-function?<br>
 If thats so, then what does (flat-contract predicate)  do?<br>
<a href="http://docs.racket-lang.org/reference/data-structure-contracts.html#(def._((lib._racket/contract/private/misc..rkt)._flat-contract))" target="_blank">http://docs.racket-lang.org/reference/data-structure-contracts.html#(def._((lib._racket/contract/private/misc..rkt)._flat-contract))</a><br>

<br>
 Thanks,<br>
 Harry Spier<br>
____________________<br>
  Racket Users list:<br>
  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
</blockquote></div>