Alexander
ибо некоторые фирмы могут сказать, что весь код написанный там рабочий и т.п.
Alexander
в net crackers был знакомый который с выданного виндоноута специально не трогал свои проекты
Alexander
чтобы не было таких вопросов
Святослав
осторожность почти никогда не вредит )
Andrei
можно сказать stack exec sh и жить в нормальном шеле
это sh нормальный? оно же не умеет ничего.
Alexander
баш поставить можно и zsh
Alexander
на любителя
Alexander
точнее в PS это вроде пишется как wget вместо curl
Святослав
PS C:\Users\siusvi> curl https://s3.amazonaws.com/haddock.stackage.org/snapshots.json StatusCode : 200 StatusDescription : OK Content : {"lts-2":"lts-2.22","lts-10":"lts-10.5","lts-9":"lts-9.21","lts-4":"lts-4.2","lts-3":"lts-3.22","lts-5":"lts-5.18","lts":"lts-10.5","lts-0":"lts-0.7","nightly":" nightly-2018-02-17","lts-1":"lts-1.15",... RawContent : HTTP/1.1 200 OK x-amz-id-2: 2uyuSuvI0OihoxxPrudUOeV0UmBUG2Z/QN7s2R/k17pgqshoISH02/WU1qFcRviwl++aM0ekVpA= x-amz-request-id: E1A19D72C2F84B5F Accept-Ranges: bytes Content-Length: 257 Content-Type: ... Forms : {} Headers : {[x-amz-id-2, 2uyuSuvI0OihoxxPrudUOeV0UmBUG2Z/QN7s2R/k17pgqshoISH02/WU1qFcRviwl++aM0ekVpA=], [x-amz-request-id, E1A19D72C2F84B5F], [Accept-Ranges, bytes], [Conte nt-Length, 257]...} Images : {} InputFields : {} Links : {} ParsedHtml : mshtml.HTMLDocumentClass RawContentLength : 257
Святослав
пашет
Alexander
у меня последняя гипотеза что криво поставилась платформа
Святослав
думаешь стоит почистить и переставить?
Святослав
ghc и ghci работают хотябы )
Святослав
вообще странно что файервол может так избирательно блокировать
Святослав
может и платформа виновата
Святослав
хз, не помогает удаление/установка
Святослав
буду пока ghc обходиться с этой машины
Alexander
http://dalila.sip.ucm.es/safe/index.html
Alexander
random nightly link
Anonymous
@qnikst , там линейных типов в комплекте нету?
Alexander
поидее должны, я не разбирался пока
Anonymous
@qnikst Я всё жду, когда у кого-нибудь дойдут руки сделать конкатенативный язык с линейными типами. Тем более, что их там можно сделать на обычном HM, запретив линейным объектам быть операндами "dup" (и быть захваченными в локальные переменные)
Anonymous
Конкатенативный
Cheese
а конкатенативный хоть с какими-нибудь типами уже есть?
Antilopa
"конкатенативный" это как, если по простому?
Anonymous
https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D0%BA%D0%B0%D1%82%D0%B5%D0%BD%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F
Aleksei (astynax)
а конкатенативный хоть с какими-нибудь типами уже есть?
В конкатенативных языках вся соль в бестиповости
Aleksei (astynax)
Ты можешь только стек-эффекты проверять анализом кода
Cheese
вроде конкатенативный язык должен быть частным случаем кобина'торного
Aleksei (astynax)
Фишка в том, что при конкатенации последующая команда может брать со стека не всё из того что положила предыдущая, или наоборот - взять больше.
Aleksei (astynax)
Ты можешь положить на стек некий пакет (request к серверу, например), а следющим шагом взять только пару байт, обработать (на стеке же) и положить обратно.
Aleksei (astynax)
Впрочем реализации могут быть разные. Можно на стеке хранить указатели на данные, а не сами данные. Тогда можно и типами озаботиться
Alexander
мне кажется в итоге можно прийти к тому что C лучше
Alexander
чисто из соображений того что история повторяется
Oleg
@qnikst Я всё жду, когда у кого-нибудь дойдут руки сделать конкатенативный язык с линейными типами. Тем более, что их там можно сделать на обычном HM, запретив линейным объектам быть операндами "dup" (и быть захваченными в локальные переменные)
почитал вики, посмотрел на cat, похоже что контроля за dup недостаточно например, cond "выбрасывает" один из двух элементов на стеке, а while реюзает сколько угодно(включая 0)
Oleg
т.е. видимо нужно делать множество сортов quote для !A -> !B !A -o !B A -o B !(A -o B)
Oleg
и то же самое со всякими циклами/условиями
Anonymous
Для поглощения замыканием всё равно придётся делать dup. А те же while/cond следует реализовывать через базовые операции
Oleg
Для поглощения замыканием всё равно придётся делать dup. А те же while/cond следует реализовывать через базовые операции
не понял оба предложения. 1.Придётся делать dup входного параметра или замыкания? 2. Какие более базовые операции, чем while / cond?
Anonymous
не понял оба предложения. 1.Придётся делать dup входного параметра или замыкания? 2. Какие более базовые операции, чем while / cond?
1) Придется делать dup параметра, перед тем как сделать prepend к замыканию. После этого, правда, можно сделать dup самому замыканию, если оно не становится unduppable. 2) Эээ? Рекурсию отменили?
Anonymous
Можно ещё сделать операцию view для получения слепка линейной переменной на момент вызова
Oleg
1) Придется делать dup параметра, перед тем как сделать prepend к замыканию. После этого, правда, можно сделать dup самому замыканию, если оно не становится unduppable. 2) Эээ? Рекурсию отменили?
не, мне просто интересно, потому что в линтипах много может быть разных рекурсий, в зависимости от того, что у тебя там за замыкание и что под экспонентой
Oleg
это в любом случае сводится к сортам вайла как к сортам рекурсии
Anonymous
Я думаю, можно обойтись правилом, что линейные переменные unduppable, добавление их в замыкание (и любые другие базовые структуры) делает их тоже unduppable. While-то, по сути, не должен дублировать "счётчик цикла", это задача блока-замыкания.
Anonymous
это в любом случае сводится к сортам вайла как к сортам рекурсии
И блок-то может вообще начинаться с view, после чего его можно использовать где угодно
Anonymous
Что мешает запретить для них и drop тоже? Если язык продуман корректно, то у тебя не должно быть способа избавиться от/удвоить линейную переменную на стеке.
Anonymous
#а S -> а #а S кладет на стек копию текущего состояния линейной переменной
Oleg
#а S -> а #а S кладет на стек копию текущего состояния линейной переменной
ммммммм, совсем запутался. Откуда у линейной переменной копии?
Oleg
#а - это линейная или интуиционисткая?
Anonymous
Да не у переменной копия, а у её текущего состояния. Переменная дальше может меняться, а копия остаётся "замороженной". Линейная.
Oleg
Да не у переменной копия, а у её текущего состояния. Переменная дальше может меняться, а копия остаётся "замороженной". Линейная.
Кажется, такое копирование противоречит всему, что я знаю про линтипы. Многие из них просто принципиально не "замораживаемо-копируемы"
Anonymous
Это как readIORef
Oleg
Полагаю, говоря о линейных типах мы должны смириться с тем, что способа скопировать линейную переменную нет
Anonymous
Чтобы ты не мог скопировать саму переменную вместе с её возможностью меняться, но мог выяснить её состояние
Oleg
Это как readIORef
Но линейная переменная она гораздо дальше, чем IORef в семантике. Что если копия состояния содержит какие-то технические указатели например на хэндл для чтения из файлов и этот снэпшот переживёт закрытие файла?
Oleg
Ну или если мы говорим о квантовых вычислениях, у нас вообще нет снэпшотов состояния
Anonymous
Тогда надо сделать подкласс линейных типов, которым можно сделать view
Anonymous
Где мы, а где квантовые вычисления :)
Oleg
Ну на самом деле обычно делают наоборот, просто !А, и функцию !A -> A
Oleg
ну или точнее !(!A -o A)
Oleg
вместо viewable - тот факт, что интуиционистскую переменную ты можешь отсекать как линейный разовый срез
Anonymous
Результат перестает быть линейным, или его линейность встроена в -о?
Oleg
Результат перестает быть линейным, или его линейность встроена в -о?
не, там наоборот A - это линейная, а экспонента !A - многоразовая интуиционистская
Anonymous
А, вот оно что
undefined
вообще странно что файервол может так избирательно блокировать
Переменная среды %http_proxy% случайно определена?
undefined
Значит действительно чудеса)
Святослав
да, обидно ) совсем нет идеи как починить )
М
Проблема.
М
computeOffsets :: [ASMLine] -> [ASMLine] computeOffsets [] = [] computeOffsets (a:as) = let t = length (uniteBytecode (a:as)) v = foldl (+) 0 [ t - length (bytecode x) | x <- as ] in a {offset = v}: computeOffsets as
М
t = length (uniteBytecode (a:as)) выполняется много раз, а надо чтоб один. При этом хотелось бы обойтись без do