On 22 mai, 18:56, Mensanator aol.com> wrote:
> On May 22, 10:30 am, Nick Craig-Wood craig-wood.com> wrote:
>
>
>
>> Dave Parker flamingthunder.com> wrote:
>>> But after getting input from children and teachers, etc, it started
>>> feeling right.
>
>>> For example, consider the two statements:
>
>>> x = 8
>>> x = 10
>
>>> The reaction from most math teachers (and kids) was "one of those is
>>> wrong because x can't equal 2 different things at the same time".
>
>> This is a common feature in functional languages...
>
>> Eg
>
>> Erlang (BEAM) emulator version
5.6.2 [source] [smp:2]
>> [async-threads:0] [kernel-poll:false]
>
>> Eshell
V5.6.2 (abort with ^G)
>>> X = 8.
>> 8
>>> X = 10.
>> ** exception error: no match of right hand side value 10
>>>
>
>> That error message is the erlang interpreter saying "Hey I know X is
>> 8, and you've said it is 10 - that can't be right", which is pretty
>> much what math teachers say too...
>
> Are you saying that erlang treats 1> as an assignment, yet
> treats 2> as a comparison?
Nope. Both are treated as pattern matching. The first one binds X
because it's by that time a free variable, the second fails because it
doesn't match.
> That's inconsistent.
That's consistent when you understand how Erlang works.
> No wonder nobody uses erlang.
Strange enough, it seems that more and more developpers and company
start to look at Erlang as a possible solution to massive scaling
problems.
> Why isn't erlang smart, like Python, and avoid such confusion?
Erlang *is* smart. It's just totally different from Python. And
there's no confusion here (except on your side...).