Hello,
Est-ce que quelqu'un saurait si il est possible de faire une invocation de fonction qui serait choisie "au runtime"
Pour illustrer mon besoin, j'aimerais faire un programme qui prend un String
comme argument, et qui utilise cette String comme étant le nom de la fonction à invoquer.
Pour simplifier, disons que mon programme "addOrSub" prenne "sub" ou "add" comme seul paramètre, et qu'il doive additioner ou soustraire deux nombres (disons 5 et 3 coder en dur c'est égal ici...)
Pour le moment, j'arrive à ceci :
Ce que je souhaiterait, c'est de ne pas avoir à définir la liste "m", qui me sert de mapping entre le nom de la fonction et une String.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import System( getArgs ) add a b = a + b sub a b = a - b -- correspondance entre une string et une fonction m = [ ("add",add), ("sub",sub) ] main = do args <- getArgs let arg = args !! 0 -- recherche de la première fonction dans la "m", correspondant à arg let fonction = snd (filter (\it -> fst it == arg ) m !! 0) -- invocation de la fonction avec 5 et 3 print $ show $ fonction 5 3
En java, j'utiliserais la reflection pour faire cela, mais en haskell, comment faire ???
Partager