Haskell

Halt! Страница огорожена от Легиона. Хочешь высказаться? Добро пожаловать в обсуждение. « Хаскель — это как ламборджини в деревне. Немного подрочил — и пошел работать на тракторе. » — Ксеноцефал Истинная причина надежности Типичный программист на Haskell Ещё один типичный программист на Haskell Haskell — функциональный декларативный язык программирования, первая версия которого была стандартизирована в 1990 году, назван в честь математика Хаскелла Карри. Язык Haskell известен благодаря синтаксису, в сравнении с которым пёрл выглядит псевдокодом, а также необходимостью глубокого понимания лямбда-исчисления, замыканий, теории графов, теории категорий, сопромата, анатомии мозга и прочего матана даже для вывода на экран строки «Hello, World!» История В 1958 году был изобретён первый функциональный язык программирования — Лисп. К 80-м годам прошлого века функциональных языков стало очень много. Каждый задрот считал своим долгом изобрести свой. И вот однажды, в 1987 году было решено создать язык, который бы включал лучшие достижения из всех языков программирования. Собрался специальный комитет из отборнейших задротов и без лишнего шума создали его. Предшественниками хаскеля были ML, SML, Miranda. Кроме того туда добавили немного лиспа, пролога, матана и ещё чего-то там. Что касается названия, то однажды во время пьянки задроты просто взяли и выбрали общим голосованием «хаскель» из 25 рандомных слов. Читай @ просвещайся. Хаскель, чаны и все-все-все Наглядная демонстрация мощи языка Хаскель и лисп — популярные и постоянные мемы в /s/ и /prog/. Как это сочетается с большой популярностью хаскеля в очень узкой академической среде — не ясно. Востребованность Как и положено в таких вещах, ярость отдельных сторонников языка обратно пропорциональна его востребованности на рынке. Согласно проведенным с участием авторитетных анонимусов исследованиям, в мире на данный момент насчитывается около 8 реальных вакансий для программистов на хаскеле. В остальных случаях знание хаскеля рассматривается, как правило, как незначительный плюс. Не будем забывать, что хаскель наиболее активно разрабатывается в недрах Microsoft Research. Nuff Said. Обыдленный хаске…^W ML под названием F# включен в Visual Studio 2010, а это значит, что скоро знание хаскеля будет как минимум преимуществом при поступлении на работу. Примеры кода на Haskell Так на haskell пишут перловцы: import Random;import List;import Char;p=putStrLn;u=uncurry;f x=(x\\).(x\\) main=mapM(\x->randomRIO(49,54))[1..4]>>=n 0.map chr>>=p.("Tries: "++).show e=((partition$u(==)).).zip;h(p,q)=['*'|x<-p]++['+'|x<-(u f)$unzip q] n a s=getLine>>=m where{m i|i==s=return a;m i=p(h$e i s)>>n(a+1)s} Hello world: main :: IO () main = putStrLn "Hello, world!" Для олдфагов: {-# OPTIONS_GHC -fno-warn-type-defaults #-} {-# LANGUAGE ExtendedDefaultRules, OverloadedStrings #-} module Hello where import Language.BASIC main :: IO () main = runBASIC $ do 10 PRINT "Hello BASIC World!" Вычисление факториала: fac n = product [1..n] А так его пишут нубы: fac n = if n == 1 then 1 else (fac n-1) * n Так — продвинутые нубы: fac 1 = 1 fac n = fac (n-1) * n Любители матана: 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))) Ну и так далее. А это программа на Haskell, которая выводит программу на Python, которая выводит программу на Ruby, которая выводит исходную программу на Haskell. q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c ++ [','] ++ show a ++ [')'] main=q "q a b c=putStrLn $ b ++ [toEnum 10,'q','('] ++ show b ++ [','] ++ show c ++ [','] ++ show a ++ [')']" "def q(a,b,c):print b+chr(10)+'q('+repr(b)+','+repr(c)+','+repr(a)+')'" "def e(x) return 34.chr+x+34.chr end;def q(a,b,c) print b+10.chr+'main=q '+e(b)+' '+e(c)+' '+e(a)+' '+10.chr end" Любой программист без словаря поймёт, что такое Haskell Языки программирования Промышленные: 1С • BAT • C# • C • C++ • Java • JavaScript (AJAX) • Pascal • Perl • PHP • Python • Ruby • ABAP • Ассемблер • Васик • Фортран Эзотерические: BrainFuck • Erlang • Forth • Haskell • LISP (My other car) • Prolog • Tcl • TeX Профессии Быдлокодер • Программист • Тестировщик • Хакер • Хеллоуворлдщик Методы и стили Reverse Engineering • Анти-паттерн • Выстрелить себе в ногу • Грязный хак • Код (индусский) • Костыль • Метод научного тыка • Помолясь • Свистелки и перделки Прочее ++i + ++i • Deadline • %s • 640 килобайт • CMS • Dummy mode • ЕГГОГ • Foobar • God is real, unless explicitly declared as integer • GOTO • Ifconfig • KISS • RegExp • SICP • sql.ru • Xyzzy • Дискета • Инжалид дежице • КОИ-8 • Лог • Ман • Рекурсия • СУБД • Тест Тьюринга • Умение разбираться в чужом коде • Фаза Луны • Фатальный недостаток