Re[9]: Eta reduction (Haskell)
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 25.04.07 09:09
Оценка:
Здравствуйте, Трурль, Вы писали:

Т>Все эти ката- ана- и пара- легко получаются из хило-. Последний можно рассматривать как общий шаблон итеративного вычисления.


Твоя правда, спасибо, сам не увидел. Были сомнения насчёт параморфизма. Проверил — всё очень легко ложится:

hylo p f g c a | p a  = c
               | True = f b (hylo p f g c a')
    where
        (b, a') = g a

-- ката и ана легко:

ana p g = hylo p (:) g []

cata f = hylo null f (\(x:xs) -> (x,xs))

-- класс типов для параморфизма

class Para p a | p -> a where
    isStart   :: p -> Bool
    decompose :: p -> (a, p)

-- например, для списка
instance Para [a] a where
    isStart = null
    decompose (x:xs) = (x,xs)

-- обычное определение параморфизма

para f b x
    | isStart x  = b
    | otherwise  = f m (para f b n)
    where
        (m,n) = decompose x

-- а вот он же через хиломорфизм

para' f = hylo isStart f decompose
Re[10]: Eta reduction (Haskell)
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 25.04.07 12:47
Оценка:
Можно без fundeps обойтись:

class Para p where
    isStart :: p a -> Bool
    decompose :: p a -> (a,p a)

instance Para [] where
    isStart = null
    decompose (x:xs) = (x,xs)
Re[4]: Eta reduction (Haskell)
От: Mirrorer  
Дата: 25.04.07 16:34
Оценка:
Здравствуйте, palm mute, Вы писали:

PM>Хаскелл — плохой язык для начала изучения ФП именно потому, что в нем куча сахара.


Хм. А какой тогда хороший и без сахара ?
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[5]: Eta reduction (Haskell)
От: deniok Россия  
Дата: 25.04.07 18:34
Оценка: :)
Здравствуйте, Mirrorer, Вы писали:

M>Здравствуйте, palm mute, Вы писали:


PM>>Хаскелл — плохой язык для начала изучения ФП именно потому, что в нем куча сахара.


M>Хм. А какой тогда хороший и без сахара ?


Чистая лямбда. Или Unlambda.
Re[5]: Eta reduction (Haskell)
От: palm mute  
Дата: 25.04.07 19:18
Оценка: +1
Здравствуйте, Mirrorer, Вы писали:

M>Хм. А какой тогда хороший и без сахара ?

Схема.
Re[6]: Eta reduction (Haskell)
От: dr.Chaos Россия Украшения HandMade
Дата: 26.04.07 08:49
Оценка: 1 (1) +1
Здравствуйте, palm mute, Вы писали:

PM>Здравствуйте, Mirrorer, Вы писали:


M>>Хм. А какой тогда хороший и без сахара ?

PM>Схема.

Я кстати, последовал совету и сейчас читаю SICP, но задания делаю на 2х языках. Чтоб и принцип за "сладостью" не потерялся, и сахар потихоньку запоминался.
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.