Comments 10
Again…
Откуда взялся такой императивный print в якобы чисто декларативном языке? Вы либо крестик снимите…
как раз все там декларативно и чисто, прочтите внимательнее начало поста habrahabr.ru/blogs/programming/112030/
причина в том, что запись
где значения IO* символизируют значение «внешнего мира» до и после вызова соответствующих функций.
причина в том, что запись
main --> print("Hello"), nl, print("World")
на самом деле является более короткой формой записиmain(IO0,IO) :- print("Hello",IO0,IO1), nl(IO1,IO2), print("World",IO2,IO)
где значения IO* символизируют значение «внешнего мира» до и после вызова соответствующих функций.
Есть ли что-то похожее на call-by-reference?
То есть
main(IO) :- print(«hi»,IO), print(«there»,IO).
как короткая форма для
main(IO0,IO1) :- print(«hi»,IO0,IO0'), print(«there»,IO0',IO1).
? Или это не имеет смысла в ЛП? (Просто в одном ФЯП call-by-reference помогает упростить «протаскивание» переменной линейного типа — полезно)
То есть
main(IO) :- print(«hi»,IO), print(«there»,IO).
как короткая форма для
main(IO0,IO1) :- print(«hi»,IO0,IO0'), print(«there»,IO0',IO1).
? Или это не имеет смысла в ЛП? (Просто в одном ФЯП call-by-reference помогает упростить «протаскивание» переменной линейного типа — полезно)
Очень прикольно. И даже читается вроде.
Вот это:
:- type bf_state ---> bf_state(
left :: list(int),
cell :: int,
right :: list(int)
).
напоминает zipper для односвязного списка. :) Судя по описанию в тексте, так и используется.
Вопрос: есть ли какие-нибудь книжки по Mercury? Интересно, как там реализовать, например, структуру данных смежного списка с линейными типами.
Вот это:
:- type bf_state ---> bf_state(
left :: list(int),
cell :: int,
right :: list(int)
).
напоминает zipper для односвязного списка. :) Судя по описанию в тексте, так и используется.
Вопрос: есть ли какие-нибудь книжки по Mercury? Интересно, как там реализовать, например, структуру данных смежного списка с линейными типами.
Много материалов есть на официальном сайте, но они, понятно, на английском:
www.mercury.csse.unimelb.edu.au/
Есть одна книжка на русском (а точнее перевод) — учебник для лёгкого въезда в mercury, лежит тут:
Учебник Ральфа Бекета по Mercury
www.mercury.csse.unimelb.edu.au/
Есть одна книжка на русском (а точнее перевод) — учебник для лёгкого въезда в mercury, лежит тут:
Учебник Ральфа Бекета по Mercury
Новая традиция — вместо Hello World писать интерпритатор brainfuck? :)
Хорошая традиция, а то Hello World только на проверку работоспособности компилятора годится. Может кто-нибудь сваяет такое на php? :)
Хорошая традиция, а то Hello World только на проверку работоспособности компилятора годится. Может кто-нибудь сваяет такое на php? :)
Sign up to leave a comment.
Пишем интерпретатор Brainfuck на Mercury