Browse thread
right hand side of let rec
- Laurent Chéno
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 1998-09-08 (07:08) |
From: | Laurent Chéno <lcheno@c...> |
Subject: | right hand side of let rec |
Sorry : poor-english version at the end. Je ne comprends pas ce qui se passe avec le programme suivant : (*****) let ignore _ = () ;; type 'a cycle = { mutable val : 'a ; mutable pred : 'a cycle ; mutable succ : 'a cycle } ;; let ajoute_au_cycle c x let p = c.pred and s = c.succ in let r = { val = x ; pred = p ; succ = c } in p.succ <- r ; c.pred <- r ; r ;; let cycle_of_list l let rec r = { val = hd l ; succ = r ; pred = r } in do_list (function x -> ignore (ajoute_au_cycle r x)) (tl l) ; r ;; (*****) Caml me renvoie un message d'erreur : #Entrée interactive: > let rec r = { val = hd l ; succ = r ; pred = r } > ^^^^ Ce genre d'expressions n'est pas autorisé comme membre droit d'un "let rec". Bien sûr, j'ai contourné la difficulté en écrivant let cycle_of_list l let hd_l = hd l in let rec r = { val = hd_l ; succ = r ; pred = r } in do_list (function x -> ignore (ajoute_au_cycle r x)) (tl l) ; r ;; Mais pourquoi Caml est-il si malheureux ? Cordialement, Laurent Chéno ------- poor english the later program causes an error : unauthorised expression in rhs of "let rec" why ?