Bah, pour erlang si on s'en tient strictement à l'énoncé de départ, voilà ce qui est nécessaire pour que ça fonctionne : (toujours dans une implémentation naïve)
J'ai détaillé pas mal le fonctionnement dans mon exemple précédent, mais avec les compréhensions de listes et en virant le type checking (souvent inutile pour du code trivial) ça simplifie pas mal.
-module(xy).
%% API
-export([square/3,squareXY/2]).
square(X,Y,User) -> {X,Y,User}.
squareXY(X,Y) -> [S || {Sx,Sy,_}=S <- squares(), Sx == X, Sy == Y].
squares() -> [
square(2, 2, "oxman"),
square(4, 6, "oxman"),
square(4, 7, "Sephi-Chan"),
square(2, 7, "Sephi-Chan"),
square(4, 4, "oxman"),
square(2, 7, "Sephi-Chan")
].
J'ai détaillé pas mal le fonctionnement dans mon exemple précédent, mais avec les compréhensions de listes et en virant le type checking (souvent inutile pour du code trivial) ça simplifie pas mal.