Haskell: відмінності між версіями
Перейти до навігації
Перейти до пошуку
м (rollbackEdits.php mass rollback) |
|||
| (Не показані 11 проміжних версій 8 користувачів) | |||
| Рядок 1: | Рядок 1: | ||
{{Stub}} | {{Stub}} | ||
'''Haskell''' ''(Хаскель)'' — чиста | '''Haskell''' ''(Хаскель)'' — чиста функціональна мова програмування. В основному мова популярна серед нердів і математиків, бо для розуміння принципу роботи інших мов треба знати лише алгебру і геометрію, то в Хаскелі... | ||
== Переваги перед іншими мовами програмування == | == Переваги перед іншими мовами програмування == | ||
[[Файл:HaskellCmp.jpg|300px|thumb|right|Філ зе діференс, [[C|Сюшник]].]] | [[Файл:HaskellCmp.jpg|300px|thumb|right|Філ зе діференс, [[C|Сюшник]].]] | ||
*Код на Хаскеллі в основному виходить дуже коротким, швидко компілюється та гарно виглядає. | *Код на Хаскеллі в основному виходить дуже коротким, швидко компілюється та гарно виглядає. | ||
*Він функціональний, nuff said. Але у деяких випадках, його функціональність | |||
< | *Він функціональний, nuff said. Але у деяких випадках, його функціональність — його вада. Особливо у руках любителів матану: | ||
<syntaxhighlight lang="Haskell"> | |||
− | |||
s f g x = f x (g x) | s f g x = f x (g x) | ||
− | |||
k x y = x | k x y = x | ||
− | |||
b f g x = f (g x) | b f g x = f (g x) | ||
− | |||
c f g x = f x g | c f g x = f x g | ||
− | |||
y f = f (y f) | y f = f (y f) | ||
− | |||
cond p f g x = if p x then f x else g x | cond p f g x = if p x then f x else g x | ||
− | |||
fac = y (b (cond ((==) 0) (k 1)) (b (s (*)) (c b pred))) | fac = y (b (cond ((==) 0) (k 1)) (b (s (*)) (c b pred))) | ||
</ | |||
− | |||
</syntaxhighlight> | |||
== Реалізації == | == Реалізації == | ||
*Основна - ghc <ref>Glasgow Haskell Compiler.</ref>. | *Основна - ghc <ref>Glasgow Haskell Compiler.</ref>. | ||
*HUGS | *HUGS | ||
*YHC | *YHC | ||
== Приклади коду == | == Приклади коду == | ||
===Hello, world!=== | ===Hello, world!=== | ||
<syntaxhighlight lang="Haskell"> main = putStrLn "Hello, world!!!" </syntaxhighlight> | |||
===Калькулятор=== | ===Калькулятор=== | ||
< | |||
<syntaxhighlight lang="Haskell"> | |||
calc :: String -> Float | calc :: String -> Float | ||
calc = head . foldl f [] . words | calc = head . foldl f [] . words | ||
where | where | ||
− | |||
f :: [Float] -> String -> [Float] | f :: [Float] -> String -> [Float] | ||
− | |||
f (x:y:zs) "+" = (y + x):zs | f (x:y:zs) "+" = (y + x):zs | ||
− | |||
f (x:y:zs) "-" = (y - x):zs | f (x:y:zs) "-" = (y - x):zs | ||
− | |||
f (x:y:zs) "*" = (y * x):zs | f (x:y:zs) "*" = (y * x):zs | ||
− | |||
f (x:y:zs) "/" = (y / x):zs | f (x:y:zs) "/" = (y / x):zs | ||
− | |||
f (x:y:zs) "FLIP" = y:x:zs | f (x:y:zs) "FLIP" = y:x:zs | ||
− | |||
f (x:zs) "ABS" = (abs x):zs | f (x:zs) "ABS" = (abs x):zs | ||
− | |||
f xs y = read y : xs | f xs y = read y : xs | ||
</ | |||
</syntaxhighlight> | |||
===Факторіал=== | ===Факторіал=== | ||
< | |||
<syntaxhighlight lang="Haskell"> fac n = product [1..n] </syntaxhighlight> | |||
== Посилання == | == Посилання == | ||
*[http://www.willamette.edu/~fruehr/haskell/evolution.html The Evolution of a Haskell Programmer] | |||
*[http://www.willamette.edu/~fruehr/haskell/evolution.html The Evolution of a Haskell Programmer] | |||
*[http://www.haskell.ru/ Опис мови (моск.)] | *[http://www.haskell.ru/ Опис мови (моск.)] | ||
{{Айті}} | {{Айті}} | ||
Поточна версія на 00:34, 21 листопада 2022
Haskell (Хаскель) — чиста функціональна мова програмування. В основному мова популярна серед нердів і математиків, бо для розуміння принципу роботи інших мов треба знати лише алгебру і геометрію, то в Хаскелі...
Переваги перед іншими мовами програмування
Філ зе діференс, Сюшник.
- Код на Хаскеллі в основному виходить дуже коротким, швидко компілюється та гарно виглядає.
- Він функціональний, nuff said. Але у деяких випадках, його функціональність — його вада. Особливо у руках любителів матану:
−
s f g x = f x (g x)
−
k x y = x
−
b f g x = f (g x)
−
c f g x = f x g
−
y f = f (y f)
−
cond p f g x = if p x then f x else g x
−
fac = y (b (cond ((==) 0) (k 1)) (b (s (*)) (c b pred)))
−
Реалізації
- Основна - ghc [1].
- HUGS
- YHC
Приклади коду
Hello, world!
main = putStrLn "Hello, world!!!"
Калькулятор
calc :: String -> Float
calc = head . foldl f [] . words
where
−
f :: [Float] -> String -> [Float]
−
f (x:y:zs) "+" = (y + x):zs
−
f (x:y:zs) "-" = (y - x):zs
−
f (x:y:zs) "*" = (y * x):zs
−
f (x:y:zs) "/" = (y / x):zs
−
f (x:y:zs) "FLIP" = y:x:zs
−
f (x:zs) "ABS" = (abs x):zs
−
f xs y = read y : xs
Факторіал
fac n = product [1..n]
Посилання
| |||||||||||||||||||
- ↑ Glasgow Haskell Compiler.