<div dir="ltr"><div><div><div>Ben,<br><br></div>In my own experience, novice programmers will often see type enforcement as a barrier to programming, as they do not yet understand what problems the type checker is sparing them.  This leads to a lot of frustration, and to resentment of the type system.<br>

<br></div>Using an untyped language to teach programming allows novices to make their own mistakes, to see what happens when you don&#39;t enforce a type discipline, and to learn why enforcing it is a good idea.  Give a student time to make their own mistakes, then introduce them to a statically typed language and quite often they&#39;ll love it.  They&#39;ll be immediately familiar with the kinds of errors it&#39;s sparing them from, and grateful for the reduced frustration.<br>

<br></div>So it&#39;s kind of perverse: typechecking early -&gt; more frustration, typechecking later -&gt; less frustration.  This has been my experience at least, having seen functional programming taught both with ML and with the HtDP languages.<br>

</div><div class="gmail_extra"><br clear="all"><div>Carl Eastlund</div>
<br><br><div class="gmail_quote">On Sat, Aug 24, 2013 at 4:38 AM, Ben Duan <span dir="ltr">&lt;<a href="mailto:yfefyf@gmail.com" target="_blank">yfefyf@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div dir="ltr"><div>Dear All,</div><div><br></div><div>Here’s a beginner&#39;s question about How to Design Programs.</div><div><br></div><div>HtDP puts great emphasizes on data, and it forces the reader to think about data types by writing signatures. Then what not use a typed language so that it is forced by the language itself? Or did I misunderstand the purpose of the authors?</div>


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