Haskell: відмінності між версіями

Матеріал з Файна Меморії
Перейти до навігації Перейти до пошуку
Surikoff (обговорення | внесок)
Створена сторінка: 300px|thumb|left '''Haskell''' ''(солов. Хаскелль)'' - [[Функціональне пр...
 
Surikoff (обговорення | внесок)
мНемає опису редагування
Рядок 26: Рядок 26:
===Калькулятор===
===Калькулятор===


<source lang="haskell">
<!-- <source lang="haskell"> -->
  calc :: String -> Float
  calc :: String -> Float
  calc = head . foldl f [] . words
  calc = head . foldl f [] . words
Рядок 38: Рядок 38:
     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
</source>
<!-- </source> -->


===[[Факторіал]]===
===[[Факторіал]]===
<source lang="haskell">
<!-- <source lang="haskell"> -->
fac n = product [1..n]
fac n = product [1..n]
</source>
<!-- </source> -->


== Посилання ==
== Посилання ==

Версія за 13:30, 5 квітня 2011

Haskell (солов. Хаскелль) - чиста, функціональна мова програмування.


Переваги перед іншими МП

Fell the difference, Сюшник.
  • Код на Хаскеллі в основному виходить дуже коротким, швидко компілюється та гарно виглядає.
  • Він функціональний. 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 Опис мови(моск.)

Примітки

  1. ↑ Glasgow Haskell Compiler.