Je dois tout d'abord préciser que je suis assez novice dans le domaine de Scheme et que, par conséquent, la question qui suit n'a peut-être pas beaucoup de sens.
À l'école, nous avons défini types de données algébriques qui ont typiquement un constructeur nullaire et quelques constructeurs internes/externes également.
Dans ce cas particulier, je souhaite faire un BTree
(peut-être équilibré, dans une prochaine itération) et j'aimerais quelque chose comme cette ce qui correspond à la façon dont Haskell traite les constructeurs. J'ai vu précédemment comment implémenter des arbres dans Scheme, ici par exemple, mais il s'agit de no ce que je veux.
Je ne veux pas que l'on se contente de faire une enveloppe autour des listes. Je veux simplement écrire quelque chose comme :
nil: -> BTree
node: BTree x T x BTree -> BTree
et de le faire savoir ce que j'entends par :
flattenTree: BTree -> List
et ensuite, je le définirais comme étant (en supposant que) left
, right
, key
sont définis) :
(define flattenTree
(lambda (t)
(node (flattenTree (left t))
(key t)
(flattenTree (right t)))))
Je suis également ouvert aux suggestions pour indenter correctement mon code Scheme... (et être gentiment moddé)