Haskell: відмінності між версіями
Перейти до навігації
Перейти до пошуку
мНемає опису редагування |
мНемає опису редагування |
||
| Рядок 20: | Рядок 20: | ||
===Hello, world!=== | ===Hello, world!=== | ||
< | <code>main = putStrLn "Hello, world!!!"</code> | ||
main = putStrLn "Hello, world!!!" | |||
</ | |||
===Калькулятор=== | ===Калькулятор=== | ||
calc :: String -> Float | calc :: String -> Float | ||
calc = head . foldl f [] . words | calc = head . foldl f [] . words | ||
| Рядок 38: | Рядок 35: | ||
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 | ||
===[[Факторіал]]=== | ===[[Факторіал]]=== | ||
fac n = product [1..n] | fac n = product [1..n] | ||
== Посилання == | == Посилання == | ||
Версія за 13:31, 5 квітня 2011

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]
Посилання
The Evolution of a Haskell Programmer Опис мови(моск.)
Примітки
- ↑ Glasgow Haskell Compiler.