On 18 Sep., 10:13, Bruno Desthuilliers <bruno. [EMAIL PROTECTED]> wrote: > Lorenzo Stella a écrit : > > > Hi all, > > I haven't experienced functional programming very much, but now I'm > > trying to learn Haskell and I've learned that: 1) in functional > > programming LISTS are fundmental; > > Not exactly. They are used quite a lot, yes, but that's also the case in > other paradigms. What's important in functional programming is *functions*.
Functional lists are not quite the same. They are actually recursive datastructes. In Python you would model them as nested tuples: t = (a, (b, (c, ...(d, None))))) These are essentially pairs build from the bottom up using a list constructor and they have little in common with those mutable list objects ( arrays, vectors ) being used in Python. You can easily extend them into n-ary trees and implement mutations on them as forks where the original strucure is almost preserved. This leads to all kinds of "functional data structures". In order to access an element you already need a recursive function defintion ( unless you just want to examine the head or the tail only ) and this makes functional programming and "consed" lists a perfect match. [...] > Strictly speaking, a language is functional if it has functions as first > class objects. Period. No, not period and not strictly speaking. A language is functional when its semantics is based on lambda calculus where everything is a function or a variable bound to a function which can be substituted by a function. Each functional language, to be usefull, must be augmented with programming language constructs used from other paradigms or support unsafe operations to enable proper side effects. This is not a humpty-dumpty issue where everyone can name his language a functional programming language just because one can pass functions as first class citizens around and he says so. Otherwise those languages can support a few functional programming language idioms such as map, reduce and filter or comprehensions as in Pythons case.
-- http://mail.python.org/mailman/listinfo/python-list