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. Але у деяких випадках, його функціональність - його вада. Особливо у руках любителів матану:  
<pre>
*Він функціональний, 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)))
</pre>
 
</syntaxhighlight>
== Реалізації ==
== Реалізації ==
 
*Основна - ghc <ref>Glasgow Haskell Compiler.</ref>.
*Основна - ghc <ref>Glasgow Haskell Compiler.</ref>.
*HUGS
*HUGS
*YHC
*YHC
 
== Приклади коду ==
== Приклади коду ==
 
===Hello, world!===
===Hello, world!===
<code>main = putStrLn "Hello, world!!!"</code>


<syntaxhighlight lang="Haskell"> main = putStrLn "Hello, world!!!" </syntaxhighlight>
===Калькулятор===
===Калькулятор===
<pre>
<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
</pre>
 
</syntaxhighlight>
===Факторіал===
===Факторіал===
<pre>fac n = product [1..n]</pre>
 
<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

Gry-sloupo.jpeg

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


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]

Посилання

  1. Glasgow Haskell Compiler.