Drucken der freien Monade

8

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

%Vor%

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 ?

    
nicolas 15.12.2015, 10:44
quelle

1 Antwort

9

Verwenden Sie iter und fmap :

%Vor%

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:

%Vor%     
András Kovács 15.12.2015, 11:05
quelle