Рекурсивная взаимность
Feb. 18th, 2016 05:16 pmМежду Haskell Report и GHC base имеется дивная взаимная рекурсия.
В GHC base мы имеем такое определение наименьшей неподвижной точки (least fixpoint)
В Haskell Report в разделе 3.12 описана трансляция для выражения let в ядро (привожу только релевантные правила)
Чтобы понять рекурсию, нужно понять рекурсию.
В 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 -> e0 where no variable in p appears free in e1 let p = e1 in e0 = let p = fix (\˜p -> e1) in e0с замечанием "where fix is the least fixpoint operator".
Чтобы понять рекурсию, нужно понять рекурсию.