Глядя на весь этот "синтактический сахар", а особенно просматривая коды которые невозможно читать, а можно только писать, подумалось: окамл - это такой функциональный паскаль.
Вот этого не надо, понятность кода зависит от человека писавшего, а не от языка, исключения всязкие эзотерические языки, и то если в них не предусмотрены комментарии.
Если коментить каждые несколько символов:) Хотя бы понятно что будет делаться локально... Но для языков, где сущности можно называть словами моё высказывание точно верно.
Нет, ну понятно что паскаль при большом желании можно прочесть и даже понять. Ничего трудного там нет. Просто желания этого нету. Вот также и с окамлом.
А паскаль то тебе чем не угодил? Писать на нём ещё тот ужос, но читать то что, если предеметная область понятна, если все сущности внятно названы, если код чистый хорошо разбит на логические участики и назначения каждой функции/модуля доментировано да ещё и с примерами, то тут хоть паскаль, хоть окамл, хоть питон. Другое дело, что некоторые языки подталкивают писать более понятно... Но если у человека в голове порядок то он на любом языке понятно напишет, правда такой человек скорее всего на некоторых языках просто не будет писать.
> Кстати приведи пример непонятного потвоему кода?
да любой.
=== Cut ===
val update: 'a t -> key * 'a -> 'a t (*not necessary*)
=== Cut ===
-> -> -> ->... Почему нельзя возвращаемое значение выделить от
параметров? Да понятно что он один параметр но...
Это что за кошмар?
=== Cut ===
| 4 ->
print_string ("Queue is "^(if Queue_cyclic.isEmpty !q then "" else "not ")^"empty.\n");
| 5 ->
print_string ("Queue is "^(if Queue_cyclic.isFull !q then "" else "not ")^"full.\n");
| 6 ->
quit := true
| _ ->
print_string "IMPOSSIBLE!!!\n"
=== Cut ===
Мне сразу хочется написать:
|| \
=======-> print_string "IMPOSSIBLE!!!\n"
/
Да зачем я привожу примеры открой любой код в окамлу неважно
императивный или функциональный.
Вот еще операторы хорошие:
=== Cut ===
if fabs(xi**3.0 -. a) <= (e *. fabs(a)) then
xi
else
root3_tail (xi +. (a/.(xi**2.0) -. xi)/.3.0, e)
=== Cut ===
Ай молодца.
Это что за уродство:
=== Cut ===
let rec check_tree sub t =
match (sub,t) with
(N(l1,r1),N(l2,r2)) -> (check_tree l1 l2) && (check_tree r1 r2)
| (L(x),L(y)) -> if x = y then true else false
| _ -> false;;
=== Cut ===
И т.д. и т.п.
Достаточно взять любой хорошо отформатироанный код на том же лиспе и
сразу видно что так уродско оно совсем не должно выглядеть. На окамле
можно только писать, не читать.
PS Что до паскаля то мне даже открывать какие-нибудь исходники на нем
не хочется. Выглядит вот точно также ужасно как окамл.
ХЗ, я достаточно повехостно знаком с OCaml, но всё понял. Вот только тут переменные хреново названы, еслибы были более внятные название всё бы вообще прекрасно читалось.