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

Матеріал з Енциклопедія Драматика
Перейти до навігації Перейти до пошуку
(Переніс з Файної Меморії.)
 
Рядок 6: Рядок 6:
== Переваги перед іншими мовами програмування ==
== Переваги перед іншими мовами програмування ==


[[Файл:HaskellCmp.jpg|300px|thumb|right|Fell the difference, [[C|Сюшник]].]]
[[Файл:HaskellCmp.jpg|300px|thumb|right|Feel the difference, [[C|Сюшник]].]]


*Код на Хаскеллі в основному виходить дуже коротким, швидко компілюється та гарно виглядає.
*Код на Хаскеллі в основному виходить дуже коротким, швидко компілюється та гарно виглядає.

Версія за 09:58, 26 вересня 2019

Dor3.png

Допиши кілька слів зі свого досвіду
Ми дописуємо Драматику разом і ця стаття потребує твоїх думок для повноти. Натисни "редагувати" згори сторінки чи розділу.

Gry-sloupo.jpeg

Стаття потребує доповнення!
Ця стаття засмучує наших слоупоків, бо навіть вони розуміють, що її давно вже треба доповнити усілякими корисними картинками та інформацією, або, можливо, видалити якусь недолугу хуйню ідіота і написати натомість щось притомне.


Haskell (Хаскель) — чиста, функціональна мова програмування. В основному мова популярна серед нердів і математиків, бо для розуміння інших принципу роботи інших мов треба знати лише алгебру і геометрію, то в Хаскелі...

Переваги перед іншими мовами програмування

Feel 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.