# Functional Programming

**URL:** <https://rubytalk.org/t/functional-programming/40146>\
**Category:** ruby-talk\
**Created:** [23 August 2007 17:32 UTC](https://rubytalk.org/t/functional-programming/40146 "2007-08-23T17:32:39Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Benjohn\_Barnes](https://avatars.discourse-cdn.com/v4/letter/b/df705f/32.png) [@Benjohn\_Barnes](https://rubytalk.org/u/Benjohn_Barnes)\
**Post date:** [23 August 2007 17:32 UTC](https://rubytalk.org/t/functional-programming/40146/1 "2007-08-23T17:32:39Z")

</div>

I'm interested in functional programming.

I'd really like to read a good book on it. It would have practical stuff  
in it, but also cover lots of the neat ideas (through practical  
examples), and perhaps areas of open research.

It would be aimed at someone who's very interested in programming, and  
does it as their day job, but has not really used a functional language  
professionally before.

Ideally it'd be written by Dave Thomas, and would be called "Programming  
Functionally: The pragmatic programmers guide" 🙂

Any thoughts on this, or other ways to get in to it would be great (good  
blogs, wiki, mail groups, etc).

Thanks,  
&nbsp;&nbsp;Benjohn

---

<div class="post-metadata">

**Author:** ![M\_Edward\_Ed\_Borasky1](https://avatars.discourse-cdn.com/v4/letter/m/e9c0ed/32.png) [@M\_Edward\_Ed\_Borasky1](https://rubytalk.org/u/M_Edward_Ed_Borasky1)\
**Post date:** [23 August 2007 18:22 UTC](https://rubytalk.org/t/functional-programming/40146/2 "2007-08-23T18:22:12Z")

</div>

benjohn@fysh.org wrote:

> I'm interested in functional programming.
> 
> I'd really like to read a good book on it. It would have practical stuff  
> in it, but also cover lots of the neat ideas (through practical  
> examples), and perhaps areas of open research.
> 
> It would be aimed at someone who's very interested in programming, and  
> does it as their day job, but has not really used a functional language  
> professionally before.
> 
> Ideally it'd be written by Dave Thomas, and would be called "Programming  
> Functionally: The pragmatic programmers guide" 🙂
> 
> Any thoughts on this, or other ways to get in to it would be great (good  
> blogs, wiki, mail groups, etc).
> 
> Thanks,  
> &nbsp;&nbsp;Benjohn

The closest thing (and highly recommended) would be the recent Pragmatic  
book "Programming Erlang". Erlang is a functional programming language,  
it features built-in message-passing concurrency, \*and\* the book is very  
well written. It wasn't \*written\* by Dave Thomas, but I'm sure he helped  
\*edit\* it. Dave??

---

<div class="post-metadata">

**Author:** ![Brian\_Adkins](https://avatars.discourse-cdn.com/v4/letter/b/3ab097/32.png) [@Brian\_Adkins](https://rubytalk.org/u/Brian_Adkins)\
**Post date:** [23 August 2007 23:15 UTC](https://rubytalk.org/t/functional-programming/40146/3 "2007-08-23T23:15:13Z")

</div>

If you like Ruby, you may also enjoy Lisp since it influenced Ruby.  
I'd recommend "Practical Common Lisp" by Peter Seibel. Or "ANSI Common  
Lisp" by Paul Graham. Lastly, the classic "Structure and  
Interpretation of Computer Programs" by Abelson and Sussman would be  
good.

Or you can just skip the books and simply stop assigning to  
variables 😉

Brian Adkins

> **···**
>
> On Aug 23, 1:32 pm, benj...@fysh.org wrote:
> 
> > I'm interested in functional programming.
> > 
> > I'd really like to read a good book on it.

---

<div class="post-metadata">

**Author:** ![David\_Karapetyan](https://avatars.discourse-cdn.com/v4/letter/d/bcef8e/32.png) [@David\_Karapetyan](https://rubytalk.org/u/David_Karapetyan)\
**Post date:** [24 August 2007 02:50 UTC](https://rubytalk.org/t/functional-programming/40146/4 "2007-08-24T02:50:12Z")

</div>

haskell.org has tons of resources on the haskell language. there are printed  
books but they don't have anything you can't gather yourself from the free  
tutorials and online books.

> **···**
>
> On 8/23/07, benjohn@fysh.org \<benjohn@fysh.org\> wrote:
> 
> > I'm interested in functional programming.
> > 
> > I'd really like to read a good book on it. It would have practical stuff  
> > in it, but also cover lots of the neat ideas (through practical  
> > examples), and perhaps areas of open research.
> > 
> > It would be aimed at someone who's very interested in programming, and  
> > does it as their day job, but has not really used a functional language  
> > professionally before.
> > 
> > Ideally it'd be written by Dave Thomas, and would be called "Programming  
> > Functionally: The pragmatic programmers guide" 🙂
> > 
> > Any thoughts on this, or other ways to get in to it would be great (good  
> > blogs, wiki, mail groups, etc).
> > 
> > Thanks,  
> > &nbsp;&nbsp;Benjohn

---

<div class="post-metadata">

**Author:** ![James\_Edward\_Gray\_II](https://avatars.discourse-cdn.com/v4/letter/j/ea5d25/32.png) [@James\_Edward\_Gray\_II](https://rubytalk.org/u/James_Edward_Gray_II)\
**Post date:** [23 August 2007 18:31 UTC](https://rubytalk.org/t/functional-programming/40146/5 "2007-08-23T18:31:08Z")

</div>

No offense intended, but I am working through that book right now and I would rate it as "good, but not great" writing. The author explains some things very well and is very knowledgeable about the topic, but he leaves out a bit much in places.

For example, I don't feel he ever properly covers printing a message to the screen. You can figure it out from his examples and the man pages he references, but it would be nice not to need these steps.

That said, I do feel I learned a good deal about functional programming from it and I am glad I read it.

James Edward Gray II

> **···**
>
> On Aug 23, 2007, at 1:22 PM, M. Edward (Ed) Borasky wrote:
> 
> > The closest thing (and highly recommended) would be the recent Pragmatic  
> > book "Programming Erlang". Erlang is a functional programming language,  
> > it features built-in message-passing concurrency, \*and\* the book is very  
> > well written.

---

<div class="post-metadata">

**Author:** ![Benjohn\_Barnes](https://avatars.discourse-cdn.com/v4/letter/b/df705f/32.png) [@Benjohn\_Barnes](https://rubytalk.org/u/Benjohn_Barnes)\
**Post date:** [24 August 2007 09:01 UTC](https://rubytalk.org/t/functional-programming/40146/6 "2007-08-24T09:01:50Z")

</div>

Thanks (everyone) for your suggestions.

\*snip\*

> Or you can just skip the books and simply stop assigning to  
> variables 😉

That's very much my programming style. I wonder if it comes from the  
small amount of functional programming that I studied 🙂

I guess what I'm intersted in is the techniques or patterns that come up  
in functional programs. Program transformation seems to be something  
that gets used a lot, for example... I think the ideal for me would be a  
reasonably gentle intro to a language (or perhaps a few - there are  
quite a lot of those kinds of tutorials on the web though), and then a  
series of article like chapters that cover interesting ways of using the  
language.

---

<div class="post-metadata">

**Author:** ![David\_and\_Sharon\_Phi](https://avatars.discourse-cdn.com/v4/letter/d/4af34b/32.png) [@David\_and\_Sharon\_Phi](https://rubytalk.org/u/David_and_Sharon_Phi)\
**Post date:** [24 August 2007 11:55 UTC](https://rubytalk.org/t/functional-programming/40146/7 "2007-08-24T11:55:19Z")

</div>

> If you like Ruby, you may also enjoy Lisp since it influenced Ruby.  
> I'd recommend "Practical Common Lisp" by Peter Seibel.

[http://www.gigamonkeys.com/book/](http://www.gigamonkeys.com/book/)

> Or "ANSI Common Lisp" by Paul Graham.

[http://paulgraham.com/onlisptext.html?asdf](http://paulgraham.com/onlisptext.html?asdf)

As for me, I'm still sort of trying Lisp. I'm mustn't be old enough cause I just can't acquire a taste for emacs. I find it completely impenetrable and the 'reward' of learning Lisp isn't sufficient for me to endure it. Every now and then, though, I give it another shot.

Erlang though? Two thumbs up.

Cheers,  
Dave

---

<div class="post-metadata">

**Author:** ![M\_Edward\_Ed\_Borasky1](https://avatars.discourse-cdn.com/v4/letter/m/e9c0ed/32.png) [@M\_Edward\_Ed\_Borasky1](https://rubytalk.org/u/M_Edward_Ed_Borasky1)\
**Post date:** [25 August 2007 04:00 UTC](https://rubytalk.org/t/functional-programming/40146/8 "2007-08-25T04:00:50Z")

</div>

Brian Adkins wrote:

> If you like Ruby, you may also enjoy Lisp since it influenced Ruby.  
> I'd recommend "Practical Common Lisp" by Peter Seibel. Or "ANSI Common  
> Lisp" by Paul Graham. Lastly, the classic "Structure and  
> Interpretation of Computer Programs" by Abelson and Sussman would be  
> good.
> 
> Or you can just skip the books and simply stop assigning to  
> variables 😉

The graveyards are littered with the bones of programmers who thought  
they'd never have to use an imperative language again. And there are  
dozens -- maybe even hundreds -- of dead functional, single-assignment,  
dataflow, block-diagram, and other "nifty" little magic bullet languages.

Functional programming is harder than imperative programming. Recursion  
is harder to understand than iteration. Denotational and axiomatic  
semantics of programming languages are harder than operational  
semantics. And so on.

Anybody here remember SISAL? ID (Irvine Dataflow)? At least Matz  
remembered CLU. 🙂 I personally think Erlang is the last best hope for  
functional programming.

---

<div class="post-metadata">

**Author:** ![Xavier\_Noria](https://yyz1.discourse-cdn.com/flex029/user_avatar/rubytalk.org/xavier_noria/32/1867_2.png) [@Xavier\_Noria](https://rubytalk.org/u/Xavier_Noria)\
**Post date:** [24 August 2007 09:28 UTC](https://rubytalk.org/t/functional-programming/40146/9 "2007-08-24T09:28:43Z")

</div>

I had that same goal, only I already had chosen Haskell.

After reading a few online tutorials I bought "Programming in Haskell" and I think it is an excellent book. It teaches the basics, to the point, idiomatic Haskell and functional style. I am just learning Haskell so I don't have enough perspective, but my impression so far is that this book is a must-read to learn, you'll be quickly on the right track.

-- fxn

> **···**
>
> On Aug 24, 2007, at 11:01 AM, benjohn@fysh.org wrote:
> 
> > That's very much my programming style. I wonder if it comes from the  
> > small amount of functional programming that I studied 🙂
> > 
> > I guess what I'm intersted in is the techniques or patterns that come up  
> > in functional programs. Program transformation seems to be something  
> > that gets used a lot, for example... I think the ideal for me would be a  
> > reasonably gentle intro to a language (or perhaps a few - there are  
> > quite a lot of those kinds of tutorials on the web though), and then a  
> > series of article like chapters that cover interesting ways of using the  
> > language.

---

<div class="post-metadata">

**Author:** ![Forum](https://avatars.discourse-cdn.com/v4/letter/f/43a26b/32.png) [@Forum](https://rubytalk.org/u/Forum)\
**Post date:** [24 August 2007 09:37 UTC](https://rubytalk.org/t/functional-programming/40146/10 "2007-08-24T09:37:29Z")

</div>

Well I feel that "Programming Erlang" really is what you are looking,  
for. I am not finished with it, but the "gentle introduction" seems to  
fit perfectly.  
I tried OCaml, Haskell first but I did not find anything like  
"Programming Erlang" to walk me into the concepts...

Robert

> **···**
>
> On 8/24/07, benjohn@fysh.org \<benjohn@fysh.org\> wrote:
> 
> > Thanks (everyone) for your suggestions.
> > 
> > \*snip\*
> > 
> > \> Or you can just skip the books and simply stop assigning to  
> > \> variables 😉
> > 
> > That's very much my programming style. I wonder if it comes from the  
> > small amount of functional programming that I studied 🙂
> > 
> > I guess what I'm intersted in is the techniques or patterns that come up  
> > in functional programs. Program transformation seems to be something  
> > that gets used a lot, for example... I think the ideal for me would be a  
> > reasonably gentle intro to a language (or perhaps a few - there are  
> > quite a lot of those kinds of tutorials on the web though), and then a  
> > series of article like chapters that cover interesting ways of using the  
> > language.
> 
> --  
> I'm an atheist and that's it. I believe there's nothing we can know  
> except that we should be kind to each other and do what we can for  
> other people.  
> -- Katharine Hepburn

---

<div class="post-metadata">

**Author:** ![Brian\_Adkins](https://avatars.discourse-cdn.com/v4/letter/b/3ab097/32.png) [@Brian\_Adkins](https://rubytalk.org/u/Brian_Adkins)\
**Post date:** [24 August 2007 14:10 UTC](https://rubytalk.org/t/functional-programming/40146/11 "2007-08-24T14:10:12Z")

</div>

Emacs may have some advantages for Lisp, but it's not required. I use  
vim (as does Graham IIRC). Thanks for the pointers to the free books -  
I should've mentioned that.

> **···**
>
> On Aug 24, 7:55 am, Sharon Phillips \<phillip...@yahoo.co.uk\> wrote:
> 
> > As for me, I'm still sort of trying Lisp. I'm mustn't be old enough  
> > cause I just can't acquire a taste for emacs. I find it completely  
> > impenetrable and the 'reward' of learning Lisp isn't sufficient for  
> > me to endure it. Every now and then, though, I give it another shot.
> > 
> > Cheers,  
> > Dave

---

<div class="post-metadata">

**Author:** ![M\_Edward\_Ed\_Borasky1](https://avatars.discourse-cdn.com/v4/letter/m/e9c0ed/32.png) [@M\_Edward\_Ed\_Borasky1](https://rubytalk.org/u/M_Edward_Ed_Borasky1)\
**Post date:** [25 August 2007 03:44 UTC](https://rubytalk.org/t/functional-programming/40146/12 "2007-08-25T03:44:40Z")

</div>

Sharon Phillips wrote:

> As for me, I'm still sort of trying Lisp. I'm mustn't be old enough  
> cause I just can't acquire a taste for emacs. I find it completely  
> impenetrable and the 'reward' of learning Lisp isn't sufficient for me  
> to endure it. Every now and then, though, I give it another shot.

Yeah, you're right. Lisp and Forth are great old languages, but they  
were a lot more fun when they (and we) were younger. 🙂 If I hadn't  
learned Lisp 1.5 in the 1970s I probably wouldn't attempt it now.

Forth, on the other hand, is something I'd probably learn now if I  
didn't already know it. It's an amazing set of concepts that look really  
weird until you stare at them long enough. At some point in the process,  
you go, "Oh My God -- that's \*brilliant\*,", at which point you are a  
Forth addict. 🙂

I do want to sit down some day with a good Scheme and learn the  
internals, though. Speaking of which, a couple of weeks ago, Amazon.ca  
accidentally posted a price of $4 (CDN, IIRC) for "Lisp in Small  
Pieces". A bunch of folks from some other mailing lists jumped on it,  
and of course, Amazon cancelled their orders, although they felt guilty  
enough to give the losers a $10 gift certificate. But I ended up getting  
a copy at list price and it was well worth it.

> Erlang though? Two thumbs up.

Definitely!!

---

<div class="post-metadata">

**Author:** ![M\_Edward\_Ed\_Borasky1](https://avatars.discourse-cdn.com/v4/letter/m/e9c0ed/32.png) [@M\_Edward\_Ed\_Borasky1](https://rubytalk.org/u/M_Edward_Ed_Borasky1)\
**Post date:** [25 August 2007 03:48 UTC](https://rubytalk.org/t/functional-programming/40146/13 "2007-08-25T03:48:38Z")

</div>

Robert Dober wrote:

> Well I feel that "Programming Erlang" really is what you are looking,  
> for. I am not finished with it, but the "gentle introduction" seems to  
> fit perfectly.  
> I tried OCaml, Haskell first but I did not find anything like  
> "Programming Erlang" to walk me into the concepts...

There is also the problem with Haskell (and OCaml, Prolog, Eiffel, etc.  
for that matter) that they are very much academic constructs, rather  
than languages honed by real programmers who get paid to write working  
software. Erlang is very much a language for real programmers who get  
paid to write working software.

---

<div class="post-metadata">

**Author:** ![Martin\_DeMello](https://avatars.discourse-cdn.com/v4/letter/m/f17d59/32.png) [@Martin\_DeMello](https://rubytalk.org/u/Martin_DeMello)\
**Post date:** [25 August 2007 17:01 UTC](https://rubytalk.org/t/functional-programming/40146/14 "2007-08-25T17:01:54Z")

</div>

I do want to learn a concatenative at some point - any opinions as to  
whether I should start with Forth or jump straight to Joy or Factor?

martin

> **···**
>
> On 8/25/07, M. Edward (Ed) Borasky \<znmeb@cesmail.net\> wrote:
> 
> > Forth, on the other hand, is something I'd probably learn now if I  
> > didn't already know it. It's an amazing set of concepts that look really  
> > weird until you stare at them long enough. At some point in the process,  
> > you go, "Oh My God -- that's \*brilliant\*,", at which point you are a  
> > Forth addict. 🙂

---

<div class="post-metadata">

**Author:** ![Forum](https://avatars.discourse-cdn.com/v4/letter/f/43a26b/32.png) [@Forum](https://rubytalk.org/u/Forum)\
**Post date:** [25 August 2007 20:39 UTC](https://rubytalk.org/t/functional-programming/40146/15 "2007-08-25T20:39:49Z")

</div>

I know it is OT but do you share my POV that from all that old  
languages the only one that is still ahead of its time is Smalltalk?  
And to come back to the issue, How old is Erlang BTW (I did not find a  
historical chapter in my book)?  
Cheers  
Robert

> **···**
>
> On 8/25/07, M. Edward (Ed) Borasky \<znmeb@cesmail.net\> wrote:
> 
> > Sharon Phillips wrote:  
> > \>  
> > \> As for me, I'm still sort of trying Lisp. I'm mustn't be old enough  
> > \> cause I just can't acquire a taste for emacs. I find it completely  
> > \> impenetrable and the 'reward' of learning Lisp isn't sufficient for me  
> > \> to endure it. Every now and then, though, I give it another shot.
> > 
> > Yeah, you're right. Lisp and Forth are great old languages, but they  
> > were a lot more fun when they (and we) were younger. 🙂 If I hadn't  
> > learned Lisp 1.5 in the 1970s I probably wouldn't attempt it now.
> > 
> > Forth, on the other hand, is something I'd probably learn now if I  
> > didn't already know it. It's an amazing set of concepts that look really  
> > weird until you stare at them long enough. At some point in the process,  
> > you go, "Oh My God -- that's \*brilliant\*,", at which point you are a  
> > Forth addict. 🙂
> > 
> > I do want to sit down some day with a good Scheme and learn the  
> > internals, though. Speaking of which, a couple of weeks ago, Amazon.ca  
> > accidentally posted a price of $4 (CDN, IIRC) for "Lisp in Small  
> > Pieces". A bunch of folks from some other mailing lists jumped on it,  
> > and of course, Amazon cancelled their orders, although they felt guilty  
> > enough to give the losers a $10 gift certificate. But I ended up getting  
> > a copy at list price and it was well worth it.
> > 
> > \> Erlang though? Two thumbs up.
> > 
> > Definitely!!
> 
> --  
> I'm an atheist and that's it. I believe there's nothing we can know  
> except that we should be kind to each other and do what we can for  
> other people.  
> -- Katharine Hepburn

---

<div class="post-metadata">

**Author:** ![M\_Edward\_Ed\_Borasky1](https://avatars.discourse-cdn.com/v4/letter/m/e9c0ed/32.png) [@M\_Edward\_Ed\_Borasky1](https://rubytalk.org/u/M_Edward_Ed_Borasky1)\
**Post date:** [25 August 2007 19:06 UTC](https://rubytalk.org/t/functional-programming/40146/16 "2007-08-25T19:06:53Z")

</div>

Martin DeMello wrote:

> > Forth, on the other hand, is something I'd probably learn now if I  
> > didn't already know it. It's an amazing set of concepts that look really  
> > weird until you stare at them long enough. At some point in the process,  
> > you go, "Oh My God -- that's \*brilliant\*,", at which point you are a  
> > Forth addict. 🙂
> 
> I do want to learn a concatenative at some point - any opinions as to  
> whether I should start with Forth or jump straight to Joy or Factor?
> 
> martin

I guess it depends on what you want to do with it. I only briefly looked  
at Joy and haven't even heard of Factor until just now. Joy struck me as  
an "academicized" Forth, which I think is a "bad" thing. Forth itself  
has a current ANS standard and a working committee building a new  
standard, at least two commercial vendors and dozens of open-source  
implementations. People actually get paid to write Forth.

I would start with GNU Forth (gforth). It's available in most Linux  
distros and should run anywhere GCC runs. It does have a GCC dependency,  
which might be an issue on Macs or Solaris. I don't have either so I  
can't answer that -- it runs very well on Linux and Windows.

> **···**
>
> > On 8/25/07, M. Edward (Ed) Borasky \<znmeb@cesmail.net\> wrote:

---

<div class="post-metadata">

**Author:** ![Joel\_VanderWerf1](https://avatars.discourse-cdn.com/v4/letter/j/94ad74/32.png) [@Joel\_VanderWerf1](https://rubytalk.org/u/Joel_VanderWerf1)\
**Post date:** [25 August 2007 21:14 UTC](https://rubytalk.org/t/functional-programming/40146/17 "2007-08-25T21:14:40Z")

</div>

Robert Dober wrote:

> I know it is OT but do you share my POV that from all that old  
> languages the only one that is still ahead of its time is Smalltalk?

Lisp is always ahead of its time, because it is always being reinvented.

> **···**
>
> --  
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

---

<div class="post-metadata">

**Author:** ![M\_Edward\_Ed\_Borasky1](https://avatars.discourse-cdn.com/v4/letter/m/e9c0ed/32.png) [@M\_Edward\_Ed\_Borasky1](https://rubytalk.org/u/M_Edward_Ed_Borasky1)\
**Post date:** [25 August 2007 22:16 UTC](https://rubytalk.org/t/functional-programming/40146/18 "2007-08-25T22:16:09Z")

</div>

Robert Dober wrote:  
\> I know it is OT but do you share my POV that from all that old

> languages the only one that is still ahead of its time is Smalltalk?  
> And to come back to the issue, How old is Erlang BTW (I did not find a  
> historical chapter in my book)?  
> Cheers  
> Robert

Well, I think the Lispniks would claim that Smalltalk is a dialect of  
Lisp. 🙂 But seriously, Smalltalk is certainly not as "old" as Fortran,  
Lisp, or C. Nor is it the first "object-oriented" language -- that honor  
probably belongs to Simula, a dialect of Algol.

Smalltalk represents a convergence of a number of concepts, including  
"everything is an object", model-view-controller architectures, actors,  
graphical user interfaces, and many others. But I don't think Smalltalk  
was ever "ahead of its time."

I don't really think the concept of "ahead of its time" has any meaning  
where programming languages are concerned. Programming languages are in  
a very real sense living creatures -- they are born, they evolve, they  
cross-breed, and sometimes die.

But I can only think of a few languages that have actually died, in the  
sense that they haven't evolved into something in use today. SLIP and  
the IPL family of languages, with a "target market" similar to that of  
Lisp, died out. COMIT and SNOBOL, string processing languages, more or  
less died out, although their successor, regular expressions, is about  
as vital as anything can be.

And a fair number of Algol dialects -- JOVIAL, NELIAC, Algol 68 -- were  
dead-end paths off the main Algol line, today represented by C/C++/C#  
and Java. Just off the top of my head, I can't think of any others that  
literally disappeared from the face of the Earth.

---

<div class="post-metadata">

**Author:** ![James\_Edward\_Gray\_II](https://avatars.discourse-cdn.com/v4/letter/j/ea5d25/32.png) [@James\_Edward\_Gray\_II](https://rubytalk.org/u/James_Edward_Gray_II)\
**Post date:** [25 August 2007 19:11 UTC](https://rubytalk.org/t/functional-programming/40146/19 "2007-08-25T19:11:45Z")

</div>

The primary compiler for Macs is gcc.

James Edward Gray II

> **···**
>
> On Aug 25, 2007, at 2:06 PM, M. Edward (Ed) Borasky wrote:
> 
> > It does have a GCC dependency,  
> > which might be an issue on Macs or Solaris. I don't have either so I  
> > can't answer that -- it runs very well on Linux and Windows.

---

<div class="post-metadata">

**Author:** ![Bill\_Kelly](https://avatars.discourse-cdn.com/v4/letter/b/cc9497/32.png) [@Bill\_Kelly](https://rubytalk.org/u/Bill_Kelly)\
**Post date:** [26 August 2007 02:13 UTC](https://rubytalk.org/t/functional-programming/40146/20 "2007-08-26T02:13:04Z")

</div>

> Martin DeMello wrote:
> 
> > > Forth, on the other hand, is something I'd probably learn now if I  
> > > didn't already know it. It's an amazing set of concepts that look really  
> > > weird until you stare at them long enough. At some point in the process,  
> > > you go, "Oh My God -- that's \*brilliant\*,", at which point you are a  
> > > Forth addict. 🙂
> > 
> > I do want to learn a concatenative at some point - any opinions as to  
> > whether I should start with Forth or jump straight to Joy or Factor?
> 
> I guess it depends on what you want to do with it. I only briefly looked  
> at Joy and haven't even heard of Factor until just now. Joy struck me as  
> an "academicized" Forth, which I think is a "bad" thing. Forth itself  
> has a current ANS standard and a working committee building a new  
> standard, at least two commercial vendors and dozens of open-source  
> implementations. People actually get paid to write Forth.

Yay! I used to get paid to write Forth. 😃 It was my favorite  
language for many years.

This looks like a pretty nice explanation of how Forth works:  
[http://dec.bournemouth.ac.uk/forth/forth.html](http://dec.bournemouth.ac.uk/forth/forth.html)

I wrote a for-fun Forth interpreter in Perl a few years back:  
[http://tastyspleen.net/~billk/pforth/](http://tastyspleen.net/~billk/pforth/)

Just stumbled on this link--kind of interesting, Forth code to  
add object oriented defining methods to Forth: (classes with  
inheritance... although the numbers used to link message names  
to corresponding methods seems kinda clunky...)  
[http://www-personal.umich.edu/~williams/archive/forth/peters/ooPocketForth.txt](http://www-personal.umich.edu/~williams/archive/forth/peters/ooPocketForth.txt)

I've thought on occasion it might be neat to submit a ruby quiz  
sometime, where the goal is to write, in ruby, the core of a Forth interpreter/compiler, such that the rest of the language  
(provided with the quiz) can bootstrap itself.

I think it's kind of one of those potential "ah ha!" moments  
when one realizes how simple a Forth interpreter/compiler loop  
can actually be.

I'd probably get back into Forth if I were doing small embedded systems programming. But Forth doesn't go out of  
its way to do complex things behind the scenes to help the  
programmer the way Ruby does. (Fixnum -\> Bignum automatic  
conversion being one example... Dynamic memory allocation  
with garbage collection being another...)

Ultimately I ended up feeling that while Forth's simplicity  
is one of its key strengths in a context like embedded  
systems, its simplicity ends up being more of a liability  
when programing large applications.

But when you need to get an interpreter, compiler,  
I/O subsystem, and editor in a few Kbytes of memory--Forth  
is truly amazing.

Regards,

Bill

> **···**
>
> From: "M. Edward (Ed) Borasky" \<znmeb@cesmail.net\>
> 
> > > On 8/25/07, M. Edward (Ed) Borasky \<znmeb@cesmail.net\> wrote:

[Next page](https://rubytalk.org/t/functional-programming/40146.md?page=2)
