diff options
Diffstat (limited to 'content/digarden/pages/20210423140625-haskell.org')
-rw-r--r-- | content/digarden/pages/20210423140625-haskell.org | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/content/digarden/pages/20210423140625-haskell.org b/content/digarden/pages/20210423140625-haskell.org new file mode 100644 index 0000000..ddf7ca2 --- /dev/null +++ b/content/digarden/pages/20210423140625-haskell.org @@ -0,0 +1,41 @@ +:PROPERTIES: +:ID: 7f86ced4-b418-4cd4-a14e-d7e4f1f343de +:END: +#+title: Haskell +Функциональный язык программирования со строгой статической типизацией с выводом +типов. + +https://learnxinyminutes.com/docs/ru-ru/haskell-ru/ + +Инструменты: +- GHC :: компилятор +- Hugs :: старый компилятор, который не используется +- GHCI :: REPL +- GHCId :: IDE-подобный REPL (с поддержкой Cabal) +- Cabal и Stack :: Утилиты сборки +- HLint :: Линтер +- Hindent :: Форматирование +- Hackage :: Пакеты Haskell + https://hackage.haskell.org +- Hoogle :: Что-то вроде apropos для Haskell + https://hoogle.haskell.org + +Элементы: + +- Анонимная функция + \x -> x * 10 + map (\x -> x * 10) [1..5] -- [10, 20, 30, 40, 50] + +#+begin_src haskell +{- Управление приоритетом вычисления +В Haskell есть функция `$`, которая применяет +свой первый аргумент ко второму с наименьшим приоритетом +(обычное применение функций имеет наивысший приоритет) +Эта функция часто позволяет избежать использования +"лишних" скобок -} +head (tail (tail "abcd")) -- 'c' +head $ tail $ tail "abcd" -- 'c' +-- того же эффекта иногда можно достичь использованием композиции +(head . tail . tail) "abcd" -- 'c' +head . tail . tail $ "abcd" -- 'c' +#+end_src |