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

Матеріал з Файна Меморії
Перейти до навігації Перейти до пошуку
0
Surikoff (обговорення | внесок)
мНемає опису редагування
 
(Не показана 1 проміжна версія ще одного користувача)
Рядок 1: Рядок 1:
dovbojoby sosnule
[[Файл:Haskell-Logo-Variation.png|300px|thumb|right]]
http://dramatica.org.ua/
'''Haskell''' ''([[Солов'їна|солов.]] Хаскелль)'' - [[Функціональне програмування|чиста, функціональна]] [[Мова програмування|мова програмування]]. В основному мова популярна серед [[нерд]]ів і математиків, бо для розуміння інших принципу роботи інших мов треба знати лише алгебру і геометрію, то в Хаскелл...
 
 
== Переваги перед іншими [[Мова програмування|МП]] ==
[[Файл:800px-Cmp.jpg|300px|thumb|right|Fell the difference, [[Сі|Сюшник]].]]
 
*Код на Хаскеллі в основному виходить дуже коротким, швидко компілюється та гарно виглядає.
*Він [[Функціональне програмування|функціональний]]. [[nuff said]]. Але у деяких випадках, його функціональність - його вада. Особливо у руках любителів [[Матан|матану]]:
<pre>
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)))
</pre>
 
 
== Реалізації ==
 
*Основна - ghc <ref>Glasgow Haskell Compiler.</ref>.
*HUGS
*YHC
 
 
== Приклади коду ==
 
===Hello, world!===
<code>main = putStrLn "Hello, world!!!"</code>
 
===Калькулятор===
<pre>
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
</pre>
 
===[[Факторіал]]===
<pre>fac n = product [1..n]</pre>
 
== Посилання ==
*[http://www.willamette.edu/~fruehr/haskell/evolution.html The Evolution of a Haskell Programmer]
*[http://www.haskell.ru/ Опис мови(моск.)]
 
== Примітки ==
{{reflist}}
 
[[Категорія:Мови програмування]]

Поточна версія на 08:19, 27 червня 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]

Посилання

Примітки

  1. ↑ Glasgow Haskell Compiler.