Имбирь - твой спиритический овощ. Войти !bnw Сегодня Клубы

the Strict language extension*

Add a new language extension -XStrict which turns all bindings strict
as if the programmer had written a ! before it. This also upgrades
ordinary Haskell to allow recursive and polymorphic strict bindings.

https://github.com/ghc/ghc/commit/46a03fbec6a02761db079d1746532565f34c340f

Все теперь можно думать о том, чтобы учить хаскель. // Ну или Ocaml

Кстати, спалите haskell vs ocaml в вопросах:
* C-FFI
* многопоточности
* ease of deployment
* поддержки ARM
* легкости получения soft realtime

Олсо, кто-нить объекты в Ocaml юзает или это шутка?
Наткнулся на такой комент на HN:
/However, with a few minor tweaks (e.g. an option type), I would rather have the C# type inference than the OCaml one. The reason is that, if I want to do something very clever, I will not find myself limited to code that I can actually prove to the OCaml compiler as correct: I have, time and time again, resorted to reflection and code generation to work around such situations. In other words C#'s Obj.magic is a lot more powerful (and safe, and expressive) than OCaml's.

A fairly good example is Eliom's way of expressing the parameters of a service. In C# you would write in a PageController class

public Details Update(PageId id, UserId user, [PostBody] Details body) 

and have your web framework automatically bind this to POST /page/update/{id}?user={user} with the appropriate serialization for PageId and UserId. And writing such a framework is easy: a couple hundred lines of code, with run-time type safety.

In OCaml you have to understand the entire Eliom_parameter framework: https://ocsigen.org/eliom/4.2/api/server/Eliom_parameter Just think of the mental firepower needed to create that framework in the first place!/

Рекомендовали: @l29ah @kuzy000
#QQMYMN / @ninesigns / 3319 дней назад

отсос маркдауна, как обычно.

#QQMYMN/PEW / @ninesigns / 3319 дней назад
Всё кроме двух последних в хаскеле лучше. Двух последних там просто нет.
#QQMYMN/PAS / @ndtimofeev / 3319 дней назад
@ndtimofeev У меня хеллоуворлд на арме работает, хули ты тут.
#QQMYMN/VET / @l29ah --> #QQMYMN/PAS / 3319 дней назад
Ты еще руст не выучил
#QQMYMN/KN0 / @plhk / 3319 дней назад

@plhk я на него посмотрел и не особо возбудился

#QQMYMN/IBP / @ninesigns --> #QQMYMN/KN0 / 3319 дней назад

@ndtimofeev пиздос бля, одни просто боготворят окамловый c-ffi божественен, кто-то говорит что это мрак и пиздец, чзх?

#QQMYMN/H9Y / @ninesigns --> #QQMYMN/PAS / 3319 дней назад
@l29ah Ок. Ты собрал ghc на малине или кросцомпиллер? Что работает?
#QQMYMN/3IF / @ndtimofeev --> #QQMYMN/VET / 3319 дней назад

@plhk пока нет задач на которых его можно осилить.

#QQMYMN/SMM / @ninesigns --> #QQMYMN/KN0 / 3319 дней назад
@ndtimofeev Кросс. Собранные кросс-компилятором бинарники на малине. Целиком компилятор я ленюсь туда тащить, так как я его собирал для musl, а на малине у меня система glibc, так что придётся слегка попердолиться. Может завтра поковыряю.
#QQMYMN/OU5 / @l29ah --> #QQMYMN/3IF / 3319 дней назад
@ninesigns Это тебе лучше @komar отвечает.
#QQMYMN/A5N / @ndtimofeev --> #QQMYMN/H9Y / 3319 дней назад

@ndtimofeev да он его поди забыл уже со своими рубями

#QQMYMN/VB9 / @ninesigns --> #QQMYMN/A5N / 3319 дней назад
@l29ah Ок. Держи меня в курсе, мне это нужно.
#QQMYMN/2FT / @ndtimofeev --> #QQMYMN/OU5 / 3319 дней назад
@ndtimofeev Подпишись на тег *haskell.
#QQMYMN/MG5 / @l29ah --> #QQMYMN/2FT / 3319 дней назад
Алсо Strict тебя не спасёт. Он просто расставляет ! везде в модуле в котором указан. То есть память обновляться не будет и уже скомпилированные библиотеки он не затроент. Более того, если код не написан с учётом Strict, то включение строгости оторвёт тебе ногу.
#QQMYMN/1N9 / @ndtimofeev / 3319 дней назад

@ndtimofeev спасибо, значит хаскель мне не нужен

#QQMYMN/CUB / @ninesigns --> #QQMYMN/1N9 / 3319 дней назад
@ninesigns Всегда пожалуйста.
#QQMYMN/X51 / @ndtimofeev --> #QQMYMN/CUB / 3319 дней назад
Алсо тут верно пишут, что строгий хаскель это Rust.
#QQMYMN/K6X / @ndtimofeev / 3319 дней назад
@ninesigns Ну смотри * C-FFI - зироу кост, надо только объявить extern {} * многопоточности - збс * ease of deployment - cargo build * поддержки ARM - cargo build --target=arm-unknown-linux-gnueabi * легкости получения soft realtime - без гц хуль тебе не реалтайм
#QQMYMN/QRM / @plhk --> #QQMYMN/SMM / 3319 дней назад
@ndtimofeev Не, higher kinded types не завезли, монатки не заюзаешь
#QQMYMN/8P4 / @plhk --> #QQMYMN/K6X / 3319 дней назад

@plhk а в расте экспешны чокак?

#QQMYMN/M9B / @ninesigns --> #QQMYMN/8P4 / 3319 дней назад
@ndtimofeev Тормозной Rust. inb4: Rust - это тормозной Rust.
#QQMYMN/IFL / @kuzy000 --> #QQMYMN/K6X / 3319 дней назад
@ninesigns как в го
#QQMYMN/ZLB / @plhk --> #QQMYMN/M9B / 3319 дней назад

@plhk то есть в сишке (уебищно).
бля как обрабатывать ошибки без манаток и нормальных эксепшнов?

#QQMYMN/Q4G / @ninesigns --> #QQMYMN/ZLB / 3319 дней назад
@plhk Там можно сделать, чтоб borrow checker обосрался с false negative?
#QQMYMN/14N / @kuzy000 --> #QQMYMN/QRM / 3319 дней назад
@ninesigns > бля как обрабатывать ошибки без манаток и нормальных эксепшнов? if(error) { exit(1); }
#QQMYMN/UST / @kuzy000 --> #QQMYMN/Q4G / 3319 дней назад

@kuzy000 ну там точно есть какие-то дырки и Weak Boxes.

#QQMYMN/LD3 / @ninesigns --> #QQMYMN/14N / 3319 дней назад

@kuzy000 охуительно

#QQMYMN/POJ / @ninesigns --> #QQMYMN/UST / 3319 дней назад
@plhk Немного лучше чем в go. В go ошибка это элемент кортежа, на который можно положить хуй.
#QQMYMN/48I / @ndtimofeev --> #QQMYMN/ZLB / 3319 дней назад
@ndtimofeev разговор о panic!
#QQMYMN/2S2 / @plhk --> #QQMYMN/48I / 3319 дней назад
@ninesigns Тебе шашечки или ехать? Где лежит язык с современным рантаймом сделанный не палкой и не пальцем ты знаешь.
#QQMYMN/8CV / @ndtimofeev --> #QQMYMN/Q4G / 3319 дней назад
@plhk А их предполагается нормально обрабатывать?
#QQMYMN/O5N / @ndtimofeev --> #QQMYMN/2S2 / 3319 дней назад
@kuzy000 Сильно тормозной?
#QQMYMN/YRZ / @ndtimofeev --> #QQMYMN/IFL / 3319 дней назад
@ndtimofeev Уже нет.
#QQMYMN/ZMP / @kuzy000 --> #QQMYMN/YRZ / 3319 дней назад

@ndtimofeev судя по shootout он вполне себе уже нормик

#QQMYMN/PA5 / @ninesigns --> #QQMYMN/YRZ / 3319 дней назад
@ninesigns Ты читал исходники на шутауте?))))
#QQMYMN/IX4 / @l29ah --> #QQMYMN/PA5 / 3319 дней назад

@l29ah да, там байтоебство и абсолютно неидеоматическое использование ЯПов.

#QQMYMN/S74 / @ninesigns --> #QQMYMN/IX4 / 3319 дней назад
@ndtimofeev ты тред читал? он спрашивает про эксепшены
#QQMYMN/YQZ / @plhk --> #QQMYMN/O5N / 3319 дней назад

@l29ah палю: статическое связывание

#QQMYMN/ELT / @anonymous --> #QQMYMN/OU5 / 3319 дней назад
@anonymous ghc не умеет собираться статически.
#QQMYMN/21Q / @l29ah --> #QQMYMN/ELT / 3319 дней назад
@plhk В Rust нету эксепшенов. panic это скорее костыль чтобы финализировать программу и как-то жить в этом непростом многопоточном мире.
#QQMYMN/YDE / @ndtimofeev --> #QQMYMN/YQZ / 3319 дней назад
> the Strict language extension все из жс пиздят, суки
#QQMYMN/BJT / @krkm / 3319 дней назад
@plhk чоблядь
#QQMYMN/YV3 / @anonymous --> #QQMYMN/ZLB / 3319 дней назад
#QQMYMN/ZRI / @anonymous --> #QQMYMN/YDE / 3319 дней назад
@krkm ле
#QQMYMN/UNJ / @anonymous --> #QQMYMN/BJT / 3319 дней назад
@anonymous panic/recover thread/catch_panic
#QQMYMN/GEY / @plhk --> #QQMYMN/YV3 / 3319 дней назад
@plhk ну и чо там ОПа не устраивает? Или он хочет на них логику программы реализовывать?
#QQMYMN/IQ1 / @anonymous --> #QQMYMN/GEY / 3319 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.