1

(27 відповідей, залишених у Haskell)

quez написав:

Це, мабуть, вперше бачу комерційне використання Хаскеля. Воно справді виходить так, як в теорії: набагато менше тестів, менше часу на написання? Продуктивність не страждає?

Ну, як мінімум в Києві є ще один проект, пов’язаний з трейдингом на Хаскелі (здається в EPAM), в Одесі є Рома Чепляка, що пише на хаскелі для SignalVine http://www.signalvine.com/ . Тож я точно не перший :)

Так, вражень багато. В цілому скажу, що продуктивність — як повсюди, спочатку повільно, з часом все швидше й швидше. Але завдяки типам та іншим фішкам — маю більше можливостей для подальшого прискорення, і зараз вже, коли щось пишу на пітоні, мені типів дуже не вистачає, відчуваю, що без них набагато гірше і складніше.

Менше тестів, менше часу на написання, легше розбиратися в чужому коді, а головне — відсутність росту складності роботи з проектом по мірі його розростання. Ну і відсутність страху приймати пул-реквести, не треба боятися, що неправильний символ все поламає.

Короче, воно того варте :) Звичайно, є моменти, яких не вистачає з динамічного світу, тому, наприклад, функціональні тести маємо на пітоні, хоча чим далі тип більше планую їх звідти забрати. Ще б більше часу на "хакерство".

Сподіваюсь на наступному kyivfprog щось розказати, тож приходьте будь-ласка.

2

(27 відповідей, залишених у Haskell)

quez написав:

k-bx, дозвольте поцікавитись, що ви писали чи пишете на Хаскелі?

Не проблема. Працюю в компанії ThoughtLeadr http://www.thoughtleadr.com/ , наш продукт інтегрують різні веб-сайті для того, щоб показувати рекламу. Друга частина продукту — аналітика щодо реклами, що показувалася. Обидва продукти повністю написані на Хаскелі.

3

(27 відповідей, залишених у Haskell)

p.s.: знов вибачте, чомусь листи приходять лише коли до мене надходить пряма відповідь. Не знайшов налаштування, щоб підписатися на всю тему.

4

(27 відповідей, залишених у Haskell)

quez написав:

Ну добре. Візьмемо монаду Maybe. Я її сприймаю як тип з двома конструкторами і відповідно використовую - патерн-матчінг і т. д. Що ще можна з нею робити? Скільки не читав пояснень, далі такого розуміння не просунувся.

Але ви повинні розділяти Maybe як звичайний собі тип, і той факт, що його ще й зробили монадою. Могли не робити, для цього просто не реалізовувати "instance Monad Maybe", і все було б чудово, всі були б щасливі, жили б без монадного використання. Тому, можливо вас саме це збило з пантелику?

5

(27 відповідей, залишених у Haskell)

quez написав:

Ну добре. Візьмемо монаду 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

6

(27 відповідей, залишених у Haskell)

quez написав:

Ви так написали, ніби це чисто хаскелівське поняття.

Ну, я думав, що питання як раз про хаскелівську монаду, все ж у нас йде мова про Хаскель :) Тут, як раз, треба показати сам цей type-class, його спеціальне використання для вводу-виводу, змінних данних, спеціальний do-синтаксис, та потім ще показати інші приклади. Все дуже Хаскель-специфічне, і спочатку потребує базові знання про хаскельні типи (з параметрами), класи типів та різні інші особливості.

7

(27 відповідей, залишених у Haskell)

Ой, щось імейли мені про нові повідомлення не приходять :)

@quez монади немає сенсу пояснювати без вивчення хаскелю. Це дуже проста річ, але треба ж розуміти декілька інших базових концепцій спочатку. Беріть "Learn You A Haskell For A Great Good", а якщо десь буде важко можу іншими словами пояснити.

@0xDADA11C7 дякую, та краще закликати одразу в haskell-beginners, там багато чемних і освічених людей. Даний форум набагато краще виступає в ролі, коли люди самі шукають місце, де українською можна отримати відповіді на питання.

8

(27 відповідей, залишених у Haskell)

Добрий день.

З радістю підтримуватиму Haskell-розділ відповідями, якщо з’явиться відповідна аудиторія починаючих програмістів, що не спілкуються англійською, але мають запитання або цікавість щодо Haskell.