Bon, comme vous voyez il y a bien de ces questions qui reviennent sur ce même sujet que de faire un petit compilateur utilisant Haskell.
C'est vraiment un cauchemard pour débutant, nos notes de cours ne disent rien et on ne peut pas dire que les tutoriaux se penche sur ce genre d'insanitées
En voila un autre exemple
----
-----
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
20
21
22
23
24
25
26
27
28
29 type Var = String type Env = [(Var, Val)] -- L'environnement initial qui contient toutes les primitives. pervasive :: Env pervasive = [("+", Vprim (\(Vnum x) -> Vprim (\(Vnum y) -> Vnum (x + y)))), ("-", Vprim (\(Vnum x) -> Vprim (\(Vnum y) -> Vnum (x - y)))), ("*", Vprim (\(Vnum x) -> Vprim (\(Vnum y) -> Vnum (x * y)))), ("/", Vprim (\(Vnum x) -> Vprim (\(Vnum y) -> Vnum (x `div` y)))), ("print", Vprim (\(Vnum x) -> Vprim ( imprime x )))] --imprime :: Int -> (IO Val) imprime x = do putStrLn ("Vprim " ++ show x) return (Vnum x) data Exp = Enum Int -- Une constante | Evar Var -- Une variable | Elet Var Exp Exp -- Une expr "let x = e1 in e2" | Ecall Exp Exp -- Un appel de fonction deriving Show data Val = Vnum Int -- Un nombre entier | Vprim (Val -> IO Val) -- Une fonction predefinie instance Show Val where show (Vnum n) = show n show (Vprim f) = "VP"
Que je n'arrive pas a compilé, et que mon professeur n'arrive pas a m'expliquer. Croyez moi, 4 courriels et un tour a son bureau et ca rentre toujours pas. J'arrive pas du tout a faire compiler des trucs avec des IO
Le code normalement fonctionne, le but de l'exercisse était d'ajouter " ("print", Vprim (\(Vnum x) -> Vprim ( imprime x )))]" ... qui d'ailleurs pourrait avoir une erreur dans la déclaration du deuxième Vprim mais le reste devrait etre bon.
La petite fonction "imprime" ne compile pas du tout... parce qu'elle veut que je retourne un IO j'imagine mais le prof me dit que la fonction peut retourné qqchose d'autre. Aucun sense, je comprend rien : (
Le prof a dit d'ajouter "return" mais ca ne change rien du tout, ca compile toujours pas et je m'en arrache les cheveux. Help : (
Partager