Une personne sur Reddit a apporté ce code à mon attention:(émulé) Macros dans Haskell?
main = do
let ns = [print 1, print 2, print 3]
sequence_ ns
sequence_ $ reverse ns
sequence_ $ tail ns ++ [head ns]
head ns
Qu'est-ce qui se passe ici est que nous avons un ensemble d'opérations que nous pouvons faire des choses avec, comme arrière ou obtenir sa queue ou la tête.
Impressionnant.
Ce que je veux faire, c'est entrer dans des éléments individuels et les changer pour de bon. Par exemple, je veux être en mesure de faire quelque chose comme ceci:
ns !! 0
et obtenir quelque chose comme [print, 1], puis changer dernier élément, disons, 3,14 de sorte que la fonction imprimerait 3.14.
Est-ce possible chez Haskell ou devrais-je simplement revenir à LISP?
UNE ÉDITION IMPORTANTE: J'ai en quelque sorte gaffé. Je comprends que je vais devoir créer une nouvelle liste. Est-il possible d'obtenir les arguments d'une fonction, qui fait partie d'une liste? Ce que je veux, c'est la capacité à composer des fonctions à partir de leurs identifiants/arguments et être capable de décomposer une fonction en identifiant/argument avant qu'elle ne soit évaluée.
btw: qu'est-ce que vous en avez vraiment besoin? – yairchu