A64m
самое смешное там, конечно, ошибка при использовании штатного средства
> :list foo
cannot list source code for foo: module interactive:Ghci1 is not interpreted
соотвественно и отладчик в определенное в репле не заходит
A64m
вообще очень интересно как так получается, что "модуль" который репл формирует загружается не как интерпретируемый
A64m
может это даже настраивается где-то?
A64m
я иногда подумываю написать реплокостыль, чтоб он из объявлений настоящий файл формировал и можно было бы его перезагружать
Alexander
вот полезный бы костыль был
A64m
но тут надо думать как это отфильтровывать от вычисляемых выражений, которые-то тоже неплохо было бы перезагружать (но не все)
A64m
или даже что-то вроде доктестов наоборот, чтоб в файле можно было в комментариях прописывать выражения и вычислять их значения по команде (а не проверять сравнивать с готовым результатом как у доктеста)
A64m
впрочем, последнее-то даже наверное и есть уже
Kirill
а для icmp нет же ничего относительно хайлевел на хэкидже? была идея в дебажном хаскельскрипте пинги добавить, в итоге видимо будет просто из шелла ping пускаться
Kirill
на всяких нодах наверное 100500 пакетов для этого :)
Alexander
500250 из которых будут вызвать ping и парсить результаты
Alexander
если не больше
Vasiliy
для пингов из скрипта нужны особые права
Vasiliy
уже это неплохой аргумент в пользу запуска ping из шелла
Alexander
https://gist.github.com/PRotondo/4962437 вон что-то есть
A64m
но, конечно, чтоб репл такой накостылить, надо повторить интеровую работу по выдиранию ghci из ghc. причем интеровую работу использовать видимо нельзя, там ghci старый, даже байндинги без let не поддерживает
Alexander
а плагин наоборот через плагин нельзя какой?
A64m
не понял задумку
Anonymous
На днях в хаскеляч залетел фанат Idris'а. Замечу, что любые попытки построить тьюринг-полный язык с тотальным подмножеством, основанном на MLTT, должны вызывать справедливый интерес haskell-коммьюнити, а чаты по идрису и хаскелю в значительной мере пересекаются. Естественно в дискуссии всплывал вопрос о целесообразности ленивой стратегии редукции. Кроме стандартных аргументов в духе "это сложно и не нужно" всплыл ещё один, претендующий на объективность и достоверность.
Утверждалось, что ленивая стратегия редукции -- основная причина сложности построения денотационной семантики хаскеля, основанной на теории категорий. Но так ли это?
По языку программирования мы хотим построить такую категорию, что каждому типу будет соответствовать объект категории, а каждой функции из A в B -- соответствующую стрелку. При этом мы хотим, чтобы функциям f,g :: A-> B соответствовали одинаковые стрелки тогда и только тогда, когда для любого a из A f(a) = g(a)
Сложность наступает как только мы берём тьюринг-полный язык. Ведь далеко не все функции останавливаются! Как приравнять функции, которые работают бесконечно долго? Есть два выхода из этой ситуации. Оба работают только для языков с энергичной редукцией. Первый -- просто выкинуть нетотальные функции из категории, сделать вид что их просто нет. Естественно при этом теряется всякая доказательная сила рассуждений об этом языке с помощью теории категорий, ведь о частичных функциях мы не может сказать вообще ничего.
Второй -- "добавить" внутрь типа специальный элемент _|_ и сказать, что дополнить f(a) = _|_, если она f(a) не останавливается. Так мы получим корректное равенство на стрелках, но что будет, если мы начнём над этой категорией рассматривать эндофункторы и интерпретировать их в терминах computer science? Ничего хорошего: ведь мы можем легко переводить тотальные функции в нетотальные и наоборот, информация о том кто из них кто абсолютно теряется. Мы столкнулись с той же проблемой, что и в первом случае, но подошли с ней с другой стороны.
Резюмируя: корректной категориальной денотационной семантики не может быть ни у одного тьюринг-полного языка. Но что же делать со всеми наработками в этой области? Ведь на практике они работают. Чуть позже я постараюсь сделать наброски ответа на него
о, покажите мне этого фаната Идриса. прямо заинтересовали.
A64m
Фанат идриса? Такое вообще бывает?
Viacheslav
я думаю их тут не один)
Евгений
A64m
а мы тут измеряли скорость писания в дев нулл на хаскеле и расте, когда это не было еще мейнстримом https://www.reddit.com/r/haskell/comments/7bsjj4/optimising_the_yes_implementation/
Alexander
: )
Anatolii
https://capnproto.org/news/2013-08-12-capnproto-0.2-no-more-haskell.html
Anatolii
чувак переписал компилятор с haskell на C++
Anatolii
я вот что удивлен
Alexander
2013
A64m
знаю более удивительное переписывание с хаскеля на плюсы
Anatolii
я виже что старая - просто как-то странно такое видеть
A64m
автор альтернативного бекенда стг - ллвм (должен был быть доклад на HIW) переписал его с хаскеля на плюсы
Alexander
qnikst@qwork ~ $ ps aux | grep cabal
qnikst 10522 15.9 0.0 0 0 pts/2 Zl+ 14:22 0:12 [cabal] <defunct>
Alexander
:/
Alexander
а как процесс может быть Z и жрать проц?
A64m
> I want to write object.methodName, not ModuleName.objectTypeMethodName object
Λrtem
Alexander
а Object.methodName кто запрещает писать?
Alexander
внутренний нытик?
Anatolii
это из статьи где чувак с хаскеля на плюсы переписывал
Dmitry
что за статья?
Dmitry
и зачем он это делал
Anatolii
Λrtem
Dmitry
о. с первых слов видно, что контуженый пишет. читать нужно? неожиданные повороты сюжета, что-то интересное?
Dmitry
я в 2004-ом году переписывал софтину с SML на Perl
Dmitry
а стыдно до сих пор
Anonymous
а стыдно до сих пор
https://docs.perl6.org/language/haskell-to-p6
Тут туториал написали, кстати 🙂
Anonymous
Может пригодится
Dmitry
едва ли.
Vasiliy
нормальный типок, решил запилить убийцу протобуфа, заодно попробовать сабж, когда понял, что надо ехать, соскочил обратно на плюсы
Dmitry
и чем кончилось - убил протобуф?
Dmitry
судя по паре рандомных абзацев, no way.
Vasiliy
надо полагать, то, что ему в нём не нравилось, убил
Vasiliy
стоит учитывать, что он заодно и автор вторых протобуфов
A64m
он же там пишет
> I’m an object-oriented programmer
Anonymous
господину @elemir90 от анонимного идрисо-почитателя.
(стандартных аргументов в духе "это сложно и не нужно")
из того, что аргументы "стандартные" не вытекает, что они неверны. я бы повторил: Х-ь явился хорошим экспериментом по реализации нетрадиционной стратегии вычислений. однако это не первое слово в способах редукции лямбды, и далеко не последнее. лично я сомневаюсь, что то, что удалось сделать в рамках компилятора Х-я станут буквально реализовывать в других языках. просто глядя на факты, что языки в поледние годы плодятся, как грибы, и ленивых среди них что-то не особенно видно, так? причины тому есть, но это отдельная тема, ее можно обсуждать долго.
(ленивая стратегия редукции -- основная причина сложности построения денотационной семантики хаскеля)
нет же. было два отдельных утверждения:
(1) нет стандартного способа задать равенство на функциях Х., причем устраивающих все стороны вариантов вообще пока не предложено (что, в частности, мешает говорить о синтаксической категории Hask как об отдельном точно определенном объекте). это "проблема равенства". и это вовсе не проблем семантики, это проблема аксиоматики.
(2) на основе чисто-ленивой семантики трудно (до сих пор неизвестно как) построить смешанную, включающую обычные неленивые функции и типы данных (а наоборот - легко). это "проблема seq".
(рассуждения из ниоткуда в никуда поскипаны)
я так понимаю, что Вы читали что-то, и куча знаний у Вас есть, но читали (именно обсуждаемую область) не совсем систематически. извините. главное здесь, что Вы начиная со странных посылок приходите к странным выводам.
(Резюмируя: корректной категориальной денотационной семантики не может быть ни у одного тьюринг-полного языка)
очевидная чепуха же. начиная с того, что есть классическое лямбда-исчисление (как язык), и у него есть классическая денотацинная семантика (и их варианты). и остальные языки функционально стиля являются расширениями лямбды. тут как раз нет проблемы, и давно!
A64m
> языки в поледние годы плодятся, как грибы
например?
Евгений
Я прочитал только резюме и первый абзац и понимаю, что вы с моим текстом сделали тоже самое 😆
Anonymous
Евгений
Аргумент 99 уровня. У Вас тоже
A64m
ну есть два языка сделанных теми, кто действительно видел что-то кроме плюсов и питона - пурскрипт и идрис. "как грибы" я бы это не назвал
Anonymous
Аргумент 99 уровня. У Вас тоже
Вы изначально отказались обсуждать содержательно, сказав, что "не читали". каких ответных аргументов Вы ожидали?
Евгений
Anonymous
A64m
из нормальных неигрушечных имплементаций, не изувеченных под какую-то не ФЯ платформу - самая новая mlton (но там сам язык старее) ghc и камл спешл лайт немного постарее, лет на пять. Т.е. за двадцать лет аж 0, на бум языков не похоже
Alexander
я подозреваю, что в утвержлении выше, не ФП-языки включены
Anonymous
"за двадцать лет аж 0" лол. я же говорю "закроем глаза". сейчас свои языки не пишет только ленивый.
A64m
новые модно-молодежные языки типа го и свифта особо никакие наработки по ЯП позднее 70-х не используют, не только ленивость
Dmitry
а пурс это точно что-то новое? это не то, что хотел сделать автор disciple, но не осилил?
Евгений
Но ведь правда не осилили, что тут поделать?
> (1) нет стандартного способа задать равенство на функциях Х., причем устраивающих все стороны вариантов вообще пока не предложено
Я указываю на то, что нет стандартного способа задать равенство на функциях любого тьюринг-полного языка. Вообще говоря теория доменов вырастает из этой проблемы. Да, Вы можете проигнорить существование нетотальных функций в строгом языке, но это убегание от проблемы, которое в случае построения категориальной семантики не даёт ничего вообще
> (2) на основе чисто-ленивой семантики трудно (до сих пор неизвестно как) построить смешанную, включающую обычные неленивые функции и типы данных (а наоборот - легко). это "проблема seq".
seq не неленивая функция, вы даже умудряетесь seq и force путать
A64m
Dmitry
согласен
Anonymous
A64m
Dmitry
а что он содержит?
Alexander