Вопрос по Haskell
От: Shmj Ниоткуда  
Дата: 03.09.19 04:45
Оценка:
Как там правильно узнавать ответ... В профильном не ответят, а вот если сказать типа:

  Скрытый текст
ну что за дерьмо-язык, кто только придумать такое мог, 3 дня мучаюсь с простейшей фигней.


— то сразу покажут что был не прав и приведут правильное решение

В общем, решил познать суть Дао сделать свою первую монаду на Haskell. Начать с простого — сделать аналог Maybe, но назвать Maybe2.

По идее вот так:

instance Monad Maybe2 where  
    return x = Just2 x  
    Nothing2 >>= f = Nothing2  
    Just2 x >>= f  = f x  
    fail _ = Nothing2


Т.е. аналог оригинальной, но добавлено 2 (в т.ч. Just2 и Nothing2).

Что дальше? Определить тип Maybe2?

Определил такое:

data Maybe2 a = Nothing2 | Just2 a


Требует чтобы было Applicative.

Пробовал это:

  Скрытый текст
instance Applicative Maybe2 where  
    pure = Just2  
    Nothing2 <*> _ = Nothing2
    (Just2 f) <*> something = fmap f something


— не проканало.

В общем, как сделать полный аналог Maybe?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.