Mailing List Archive


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [tlug] "Go Considered Harmful"



Curt J. Sampson writes:
 > On 2020-09-03 12:07 +0900 (Thu), Stephen J. Turnbull wrote:

 > > Extending typing to higher-order functions is a difference
 > > of kind rather than of strength.
 > 
 > I think here you mean not that higher-order functions can be assigned a
 > type (C can do that), but that the _type language_ also has variables for
 > types and functions taking and returning types,

Yes.

 > >  >> The rule of thumb in Clojure is data structures over functions, and
 > >  >> functions over macros.
 > > ...
 > >  > ISTR Paul Graham saying something along the lines that he rarely had
 > >  > more than a handful of macros even in a large program.
 > > 
 > > defun is a macro ....  (I'm not a big fan of Paul Graham.)
 > 
 > Well, I think that Paul Graham meant what I meant

<img src=trolly_mctroll_face.png />

 > Once a macro is there and well-debugged, the forces that make the
 > rule of thumb useful aren't in play (at least not to anywhere near
 > the same degree).

Well, this is where the hygienic macro thing comes in.  I only play
with Scheme, and that only occasionally.  But I've been burned a
number of times by Emacs Lisp macros, especially new ones imported
from GNU.

 > > s/Lisp/Scheme/, please (even though I don't use Scheme much, hygenic
 > > macros rule).
 > 
 > Well, I was speaking of Lisps in general.

OK.  I can't judge Haskell at all, so if you say Common Lisp macros
beat Haskell's, I'm fine with that.

 > Well, I think that much of the "difficulty" in teaching Lisp, functional
 > programming in general, or even simple things such as recursion is due to
 > having to overcome existing experience on the student's part and the
 > general environment that considers things like recursion to be "harder"
 > than while/for/etc.

It's hard to say.  I've never really tried to find out what students
already know.  I do know it's generally easier to teach Python because
(1) it's got modules that do what they need to do so they actually
care, and (2) it's not R.

I can say it took me a while to realize that if I was going to write
recursive code in Lisp I should start by writing the stopping
condition and then the recursive part in the else branch was easier to
write.  Before I figured that out, it was confusion all the way down.



Home | Main Index | Thread Index