2009-09-19 11 views
15

Est-il possible de mettre en place une fermeture à Erlang? Par exemple, comment pourrais-je traduire cet extrait de Scheme? J'ai essayé ce qui suit, mais il me manque clairement quelque chose.Erlang: Pourquoi cela échoue-t-il avec une exception 'badarith'?

make_adder(n) -> 
    fun (x) -> x + n end. 

cela donne l'Compiler erreur

Warning: this expression will fail with a 'badarith' exception 
+1

Les gars, pourquoi cela est-il en train d'être surclassé? Je suis embarrassé de voir à quel point ma question est boiteuse! – grifaton

Répondre

25

Vous ne pouvez pas ajouter des atomes. Les variables commencent par Capital Letters in erlang. les mots commençant par les lettres minuscules sont des atomes.

En d'autres termes, votre problème n'est pas du tout lié à fun s, il vous suffit de mettre en majuscule les noms de vos variables.

+0

Merci! Je supprime la question et je vais me coucher! – grifaton

+1

Impossible de supprimer la question ... juste aller au lit. – grifaton

+1

Laissez la question et changez le titre en "Pourquoi est-ce que je reçois" cette expression échouera avec une exception "badarith" "?" Ou quelque chose de ce genre. De cette façon tous les autres débutants erlang qui feront cette erreur (je sais que je l'ai fait) le trouveront facilement en cherchant le message. – sepp2k

3
make_adder(N) -> 
    fun (X) -> X + N end. 
0

variables commencent par Majuscules en Erlang. les mots commençant par les lettres minuscules sont des atomes.

Questions connexes