Man kann eine freie Monade in jede andere Monade übersetzen, aber bei einem Wert vom Typ Free f x
möchte ich den gesamten Baum drucken, nicht jeden Knoten des erzeugten AST auf einen anderen Knoten in einer anderen Monade abbilden.
Gabriel Gonzales verwendet den Wert direkt
%Vor%kann als
abstrahiert werden %Vor% was einfach zu nennen ist, wenn wir eine polymorphe Funktion wie (mit Choice x = Choice x x
als Funktor) haben
Aber das scheint für eine einfache Operation ziemlich kompliziert zu sein ...
Welche anderen Ansätze gibt es von f x -> b
zu Free f x -> b
?
Verwenden Sie iter
und fmap
:
fmap
konvertiert von Free f a
in Free f b
und iter
erledigt den Rest. Sie können dies ausrechnen und vielleicht eine bessere Leistung erzielen:
Tags und Links haskell traversal monads free-monad