summaryrefslogtreecommitdiff
path: root/content/digarden/pages/20210423140625-haskell.org
diff options
context:
space:
mode:
Diffstat (limited to 'content/digarden/pages/20210423140625-haskell.org')
-rw-r--r--content/digarden/pages/20210423140625-haskell.org41
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