in reply to Re^2: RFC: A Perlesque Introduction to Haskell, Part One (draft)
in thread RFC: A Perlesque Introduction to Haskell, Part One (DRAFT)
Yes, you can write functional code in (most) imperative languages... at least those that support recursive function calls. Although really the way to make a functional-like factorial call in perl would be like:
That is: each function is only a single expression. Haskel goes a little further, though, because it supports function-dispatch by pattern matching... but this is the general case of how one writes functional code in perl. No assignments, no loops, a single expression. While it's true that any decent functional language interpretter supports automatic optimization of tail-recursion, that is a property of the interpretter, not of the language itself (except to the point that specifically optimized idioms usually become a part of any language, if only in the developers training of best practices).sub factorial { $_[0] == 1 ? 1 : $_[0] * factorial($_[0] - 1) }
As far as the functional language interpretter having state: well of course it does. It's ultimately implemented in machine code, and machine code on any computer is imperative. It has state (memory, registers, etc). It is a sequence of commands. So on. The point is that this state is not a mechanism employed by the programmer in his/her functional programs, it is merely an artifact of how the functional language interpretter is implemented on an inherently imperative computation machine.
Update: forgot the "- 1" in the code. Oops. I was just trying to make a point, anyway... it was obvious what I meant.
------------ :Wq Not an editor command: Wq
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^4: RFC: A Perlesque Introduction to Haskell, Part One (draft)
by Sidhekin (Priest) on Jun 24, 2004 at 02:29 UTC | |
by ihb (Deacon) on Jun 24, 2004 at 02:44 UTC | |
by etcshadow (Priest) on Jun 24, 2004 at 02:40 UTC |