Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
solve (fvm::ddt(U) + fvm::div(phi, U) + fvm::laplacian(nu, U) == -fvc::grad(p) + f);
И для преодоления разрыва между этим вселенными используются бесконечные костыли разных уровней — vtbl, thunk-и, кодогенерация, виртуальные машины, монады и прочие многообразные ужасы.
И что самое печальное — для того, чтобы что-то написать для своих людских задач, используя приятную тебе семантику, нужно преодолеть этот разрыв и не забыть про abstraction penalty этого преодоления.
Я, кстати, не понимаю, как вообще можно программировать, не помня об этом.
Прелюдия (Prelude) — стандартная библиотека самых необходимых функций, определяется стандартом Haskell 98.
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
------.--------.>+.>.::
->
(_:_)(.)(.)
((_:_))
((.)(.))
((_._))
Неужели, существуют люди, которым это не нравится?
(_:_) — это невозможно понять — это нужно просто запомнить :
data [a] = [] | a : [a]
[]) или ( там стоит ИЛИ | ) состоит из головы и списка. Это рекурсивное определение.(_:_) — это непустой список, где нам неважны его значения._, а что-то другое. Т. е. в данном случае мы просто пишем это, потому что не интересуемся значением и чтобы не вводить новую переменную в локальной области видимости. Если бы мы написали (eval:l), то eval, в отличие от l, не вычислилось бы, потому что нигде не используется в локальной области видимости. "_" — означает — тут стоит параметр, но нам не нужно её значение, нам пофиг на него, и оно вычислено не будет
test = case (undefined:undefined) of
[] -> False
(x:y) -> True
null :: [a] -> Bool
, а смотрю на null [] = True
null (_:_) = False
, не пытаясь расшифровать и (_:_)(_:_) — это невозможно понять — это нужно просто запомнить
но сложно вместо -> написать function например.
:) являлось бы самодостаточным осмысленным выражением, но ничего не вспомнил. Никто не подскажет?..(_:_) — это невозможно понять — это нужно просто запомнить
не пытаясь расшифровать и (_:_)
f: R->R. Об этом и хаскель.
Прелюдия или как полюбить Haskell