Мохнатые уроды и моральные пёзды. Войти !bnw Сегодня Клубы
Привет, TbI — HRWKA! 1243.1 пользователей не могут ошибаться!
?6954
прекрасное6445
говно5909
говнорашка5512
хуита4723
anime3067
linux2656
music2637
bnw2606
рашка2570
log2364
ололо2202
дунч1849
pic1816
сталирасты1491
украина1439
быдло1438
bnw_ppl1428
дыбр1238
гімно1158

ADTs in Typed Racket with macros

Немного изящного (макроебства)[http://lexi-lambda.github.io/blog/2015/12/21/adts-in-typed-racket-with-macros/] и в тайпед/ракетке можно юзать ADT с паттерн матчингом.
(Прямо как во взрослых крутых языках).

(define-datatype Expr
  (Value Number)
  (Add Expr Expr)
  (Subtract Expr Expr)
  (Multiply Expr Expr)
  (Divide Expr Expr))

(: evaluate (Expr -> Number))
(define (evaluate e)
  (match e
    [(Value x)      x                            ]
    [(Add a b)      (+ (evaluate a) (evaluate b))]
    [(Subtract a b) (- (evaluate a) (evaluate b))]
    [(Multiply a b) (* (evaluate a) (evaluate b))]
    [(Divide a b)   (/ (evaluate a) (evaluate b))]))

> (evaluate (Add (Value 1)

                 (Multiply (Divide (Value 1) (Value 2))
                           (Value 7))))
4 1/2

Интересно, ебанется ли кто-нить достаточно чтобы набыдлить какой-нить аналог хаскеля или scalaz?

#R60TPL (14) / @ninesigns / 3390 дней назад
Пересобираю блог на hakyll'е перед переписыванием, чтобы убедиться что со времени последних изменений api не изменилось фатально. Заодно пересобираю и весь сандбокс проекта. Ох и до фига же там всего, ну да и ладно. Вдруг взгляд мой заметил что-то необычное. Что-то пошло не так? Матрица меняет программу? Нет, это enumerator-0.4.20. Его не обновляли с 2013го года и не будут собственно уже никогда. При этом лог сборки разумеется забит всякими conduit'ами, которые строго говоря решают те же задачи что и enumerator. Стал смотреть кто же такой некрофил-виртуоз. Оказалось snap. При этом сам hakyll, который использует snap только как тестовый вебсервер (непонятно зачем нужный статическому сайту) разумеется на попсовых conduit'ах. Hackage, ты редкостная помойка. Пользуясь случаем выражаю респект JohnMillikin, который в 2013ом году написал код, который пережил все изменения в стандартной библиотеке.
#6CHFJ7 (0) / @ndtimofeev / 3391 день назад
Обратите внимание, как то, что в Haskell решается с помощью монад, в <languagename> достигается при помощи прилежания и усидчивости.
#GT72S2 (1) / @l29ah / 3396 дней назад
Почему вдруг всем стала нужна эта параша? У большинства хаскелистов в системе пакетного менеджера адекватного нету?
#BP0CCQ (17) / @l29ah / 3396 дней назад
Какой компилятор/версию ставить на n900? (ARM Cortex A8, 256MB DRAM, Linux)
#7EYC4Y (4) / @l29ah / 3397 дней назад
>Write Emacs extensions in Haskell https://github.com/knupfer/haskell-emacs . кто-нибудь может обьяснить что за херня этот liquid-haskell?
#17WXNJ (5) / @anonymous / 3399 дней назад
весь вечер пытаюсь собрать иксмондад без кабала похоже что это невозможно такое
#R3CBZB (7) / @anonymous / 3404 дня назад
Охуенно выразительно и красиво. Спасибо статической типизации. data LinkedList a = EmptyLinkedList | LinkedList (LinkedList a) (LinkedList a) a
#4WNX3D (18) / @l29ah / 3404 дня назад
>>> Emerging (1 of 102) dev-lang/ghc-7.8.4::gentoo Ну девочка, ну еб твою мать
#KG45KI (11) / @mad_hatter / 3416 дней назад
http://habrahabr.ru/post/271213/ — я пропустил анонсы в более приличных местах или организаторы просто хотят чтобы я с @L29Ah'ом не приходили?
#HKOGUL (1) / @ndtimofeev / 3424 дня назад

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!/

#QQMYMN (47+2) / @ninesigns / 3426 дней назад
Cross-compiled statically linked musl arm hello world works.
#1P2VX2 (3) / @l29ah / 3435 дней назад
Тимофеев научившийся пользоваться комбинатором неподвижной точки чувствует себя как татарин научившийся выговаривать букву Р.
#R9KET8 (0) / @ndtimofeev / 3438 дней назад
Попытался заюзать concurrent-output, чтобы облагородить вывод робота. Мне показалось или там очень странный хаскель? Что-то вроде давайте ехал IO через IO и если он ехал в правильном порядке, то может быть будет хорошо. У меня заправка ракеты головного мозга или там действительно всё как-то очень неявно?
#AVCBB3 (11) / @ndtimofeev / 3439 дней назад
tfw воспользовался type families, а потом узнал что это такое
#SX214R (0) / @l29ah / 3443 дня назад
https://www.linux.org.ru/forum/development/12058192 — довели человека своими AMP, FTP, MFP, MRP.
#YH0KOT (1+1) / @ndtimofeev / 3447 дней назад
#error No implementation for getProcessCPUTime() available. Мне нужно наколдовать какую-то волшебную чародейскую магию чтобы ghc собрался с musl?
#0B7Y4Q (6+1) / @l29ah / 3457 дней назад
http://www.joachim-breitner.de/blog/684-Constructing_a_list_in_a_monad_revisited — в догонку к #2806440. Один пошутил на тему того что можно хакнуть Nil через C-- и получить дешёвую вставку в конец списка. Другой забенчмаркал это и пришёл к выводу что это отличная идея. Теперь полагаю надо ждать Hack Hole Proposal в кафе. Не зря меня так напугал исходный пост.
#MAB2ZJ (2) / @ndtimofeev / 3459 дней назад
http://twanvl.nl/blog/haskell/unsafe-sequence — Здесь неподалёку есть старое индейское кладбище. Если похоронить там кого-нибудь то он оживает. Но вы пожалуй лучше не делайте этого никогда.
#841A3V (0) / @ndtimofeev / 3460 дней назад
--
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

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