RX0057

Domaine: Exécution

Message d'erreur

l'argument %s n'est pas une expression par élément (%s)

Dans le message, %s marque une valeur que le moteur remplit au moment où il lève l'erreur.

L'histoire

Vous avez donné à map ou à reduce une expression qui ne parle pas de l'élément, et le moteur a refusé. Voyons ce que ces méthodes attendent. Map et reduce prennent une expression non évaluée, qu'on applique à chaque élément de la collection. Pas de lambda, pas de fonction passée en valeur. Pour que l'expression soit une vraie question sur l'élément, elle doit le nommer : x, it, item, ou l'étiquette de la collection. Dans le corps d'un reduce, acc nomme aussi l'accumulateur. Maintenant, un exemple de ce qu'il ne faut pas faire : xs point map, avec cinq entre crochets. Cinq ne dépend d'aucun élément, donc la réponse serait cinq pour chacun. Ce n'est plus une question sur le membre. Même chose avec un nom qui n'est pas l'élément. Le moteur refuse plutôt que de répéter la même valeur en silence, ce qui produirait une liste trompeuse. Le message vous donne l'argument tel que vous l'avez écrit, puis les mots propres de la ligne. Pour corriger, faites apparaître l'élément dans votre expression, par exemple x fois deux. Un map doit toujours regarder son élément.

Texte issu du catalogue d'erreurs du moteur Rush.