Granny's Programming Pearls
"inside of every large program is a small program struggling to get out"
JavaRanch.com/granny.jsp
Win a copy of Clojure in Action this week in the Clojure forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Please suggest some other language to use when reading SICP ?

 
Pho Tek
Ranch Hand
Posts: 782
Chrome Python Ubuntu
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello,

I plan to reread SICP.

I don't plan to use MIT Scheme http://mitpress.mit.edu/sicp/scheme/index.html

What modern functional language would you recommend ?

Thanks

Pho
 
Sean Corfield
Ranch Hand
Pie
Posts: 298
10
Clojure Linux Mac OS X
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The obvious answer would be Clojure.

At least one person has been converting the SICP examples to Clojure and publishing them on Github, I believe.
 
Ulf Dittmer
Rancher
Pie
Posts: 42966
73
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
A standard Scheme implemented in Java is Kawa. Whether something iike Clojure or Scala is appropriate depends on whether you want to stick with standard Scheme syntax.
 
Pho Tek
Ranch Hand
Posts: 782
Chrome Python Ubuntu
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
It is not important for it to be Lisp-y or scheme-like.
 
Sean Corfield
Ranch Hand
Pie
Posts: 298
10
Clojure Linux Mac OS X
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Well, solutions written in anything non-Lisp-y is going to look very different - and there may well be parts of SICP that rely on features in Lisps, such as macros. Of course there may also be parts of SICP that rely on mutable data which would have to look rather different in Clojure too...

If you don't plan on using Scheme or Clojure, I guess my question would be: Why not?

SICP is written around a dynamically typed Lisp dialect. Clojure is the closest modern equivalent. Other options might be Erlang, F#, Haskell, or Ocaml - although you might argue Erlang, Haskell and Ocaml are not really "modern" so that's why I'd want to know more about your reasoning before trying to suggest other languages...
 
chris webster
Bartender
Pie
Posts: 2369
31
Linux Oracle Postgres Database Python Scala
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
+1 for Clojure as it would seem to offer you the benefits of a "modern" functional language, plus access to the JVM platform, and as a Lisp language should not offer too many obstructions/diversions in implementing the ideas from SICP.

You could look at Racket which is based on Scheme and is fun to use, although unlike Clojure it doesn't seem to be used much outside academia.

If you're determined to stay away from Lisps, maybe Scala would count as a "modern" FP language which is gaining traction in industry, but you may find you have to spend a lot more time trying to translate Scheme-based examples into an OO/FP hybrid language like Scala with its sophisticated (and fairly perplexing) static type system.

Haskell or ML would spare you the OO diversions of Scala, but you're still dealing with static typing again.

 
Pho Tek
Ranch Hand
Posts: 782
Chrome Python Ubuntu
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Ok. I think I will choose Clojure based on your inputs.
 
Sean Corfield
Ranch Hand
Pie
Posts: 298
10
Clojure Linux Mac OS X
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
And there's a Clojure forum here on the ranch where you can ask for help, if needed!
 
I agree. Here's the link: http://aspose.com/file-tools
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic