Re: Haskell
Ну добре. Візьмемо монаду Maybe. Я її сприймаю як тип з двома конструкторами і відповідно використовую - патерн-матчінг і т. д. Що ще можна з нею робити? Скільки не читав пояснень, далі такого розуміння не просунувся.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Інші мови програмування → Haskell → Haskell
Для відправлення відповіді ви повинні увійти або зареєструватися
Ну добре. Візьмемо монаду Maybe. Я її сприймаю як тип з двома конструкторами і відповідно використовую - патерн-матчінг і т. д. Що ще можна з нею робити? Скільки не читав пояснень, далі такого розуміння не просунувся.
Ну добре. Візьмемо монаду Maybe. Я її сприймаю як тип з двома конструкторами і відповідно використовую - патерн-матчінг і т. д. Що ще можна з нею робити? Скільки не читав пояснень, далі такого розуміння не просунувся.
Ну, якщо вас цікавить саме використання її як монади — то її так і використовують. Наприклад, у вас є функція "getParam :: Text -> Request -> Maybe Text", вона повертає GET-параметр запросу, якщо він присутній. Вам треба робити щось корисне лише у разі, коли всі три параметри присутні — то ж ви можете замість
case getParam "a" req of
Just a -> do
case getParam "b" req of
Just b -> do
case getParam "c" req of
Just c -> do ...
Nothing -> handleError
Nothing -> handleError
Nothing -> handleError
ось так зробити
-- ...
let abc = do
a <- getParam "a" req
b <- getParam "b" req
c <- getParam "c" req
return (a,b,c)
case abc of
Just (a,b,c) -> ...
Nothing -> handleError
або ж, використовуючи Applicative-інстанс і TupleSections одразу:
abc <- (,,) <$> getParam "a" req <*> getParam "b" req <*> getParam "c" req
Ну добре. Візьмемо монаду Maybe. Я її сприймаю як тип з двома конструкторами і відповідно використовую - патерн-матчінг і т. д. Що ще можна з нею робити? Скільки не читав пояснень, далі такого розуміння не просунувся.
Але ви повинні розділяти Maybe як звичайний собі тип, і той факт, що його ще й зробили монадою. Могли не робити, для цього просто не реалізовувати "instance Monad Maybe", і все було б чудово, всі були б щасливі, жили б без монадного використання. Тому, можливо вас саме це збило з пантелику?
p.s.: знов вибачте, чомусь листи приходять лише коли до мене надходить пряма відповідь. Не знайшов налаштування, щоб підписатися на всю тему.
k-bx, дозвольте поцікавитись, що ви писали чи пишете на Хаскелі?
Не проблема. Працюю в компанії ThoughtLeadr http://www.thoughtleadr.com/ , наш продукт інтегрують різні веб-сайті для того, щоб показувати рекламу. Друга частина продукту — аналітика щодо реклами, що показувалася. Обидва продукти повністю написані на Хаскелі.
Це, мабуть, вперше бачу комерційне використання Хаскеля. Воно справді виходить так, як в теорії: набагато менше тестів, менше часу на написання? Продуктивність не страждає?
Це, мабуть, вперше бачу комерційне використання Хаскеля. Воно справді виходить так, як в теорії: набагато менше тестів, менше часу на написання? Продуктивність не страждає?
Ну, як мінімум в Києві є ще один проект, пов’язаний з трейдингом на Хаскелі (здається в EPAM), в Одесі є Рома Чепляка, що пише на хаскелі для SignalVine http://www.signalvine.com/ . Тож я точно не перший
Так, вражень багато. В цілому скажу, що продуктивність — як повсюди, спочатку повільно, з часом все швидше й швидше. Але завдяки типам та іншим фішкам — маю більше можливостей для подальшого прискорення, і зараз вже, коли щось пишу на пітоні, мені типів дуже не вистачає, відчуваю, що без них набагато гірше і складніше.
Менше тестів, менше часу на написання, легше розбиратися в чужому коді, а головне — відсутність росту складності роботи з проектом по мірі його розростання. Ну і відсутність страху приймати пул-реквести, не треба боятися, що неправильний символ все поламає.
Короче, воно того варте Звичайно, є моменти, яких не вистачає з динамічного світу, тому, наприклад, функціональні тести маємо на пітоні, хоча чим далі тип більше планую їх звідти забрати. Ще б більше часу на "хакерство".
Сподіваюсь на наступному kyivfprog щось розказати, тож приходьте будь-ласка.
Для відправлення відповіді ви повинні увійти або зареєструватися