Между Haskell Report и GHC base имеется дивная взаимная рекурсия.
В GHC base мы имеем такое определение наименьшей неподвижной точки (least fixpoint)
fix :: (a -> a) -> a
fix f = let x = f x in x
В Haskell Report в разделе 3.12 описана трансляция для выражения let в ядро (привожу только релевантные правила)
let p = e1 in e0 = case e1 of ˜p
(
Read more... )
Comments 12
Я хочу примитивные фикспойнт потоковые парсеры (FSM) транслировать в foldr.
Типа в языке рекурсия чтобы присуствовала как понятие, но в ядре тайпчекера ее нет.
Reply
Reply
expr([{N,X}|T],[{typevar,Y}|Acc]) -> expr(T,[{N,X},{typevar,Y}|Acc ( ... )
Reply
http://stackoverflow.com/a/14719346 - полезная ссылка про наименьшие и наибольшие фикспоинты
Reply
Reply
Leave a comment