ну есть разные подходы к типизации Y но в данном конкретном случае типизация даже не рекурсивная (а вот реализация самая что ни на есть тупая рекурсивная :)
самый простой случай (как у меня выше вот)
Y:((a -> a) -> ( a -> a)) -> a -> a
но есть разумеется и с рекурсивными типами варианты
самое плохое другое - рекурсия не хвостовая - но по нормальному сделать хвостовую рекурсию достаточно сложно (если ее изначально нет в метаязыке) - только через некий вариант свободной монады (трамплин) в императивном цикле (это должно быть частью стандартного рантайма)
no subject
Date: 2016-11-28 05:28 pm (UTC)самый простой случай (как у меня выше вот)
Y:((a -> a) -> ( a -> a)) -> a -> a
но есть разумеется и с рекурсивными типами варианты
самое плохое другое - рекурсия не хвостовая - но по нормальному сделать хвостовую рекурсию достаточно сложно (если ее изначально нет в метаязыке) - только через некий вариант свободной монады (трамплин) в императивном цикле (это должно быть частью стандартного рантайма)