Size: a a a

2021 January 30

ND

Nikita Domnickij in Lisp Forever
ну вы сейчас пытаетесь выдать сабсет фп за всё фп
источник

T

TGG in Lisp Forever
Hirrolot
реализации монад как представление их eDSL способствуют инкапсуляции на уровне функций — инкапсулируем состояние в функцию-интерпретатор монады, в противовес приватным полям в ООП где методы не имеют доступа к продолжениям чтобы их выполнить, материализовать интерпретацию этого eDSL в коде
Это просто попытка сделать ФП как ООП. Самое чистое ФП - это просто функции и всё
источник

H

Hirrolot in Lisp Forever
Nikita Domnickij
ну вы сейчас пытаетесь выдать сабсет фп за всё фп
нет, не пытаюсь
источник

a

akater in Lisp Forever
Нафига спорить, что ФП, что не ФП, что ООП, что не ООП?

Как хорошо, что никто не спорит, какое программирование императивное, а какое нет.
источник

T

TGG in Lisp Forever
Hirrolot
нет, не пытаюсь
Нет, пытаетесь.
источник

H

Hirrolot in Lisp Forever
TGG
Это просто попытка сделать ФП как ООП. Самое чистое ФП - это просто функции и всё
меня это не интересует, я говорю про то, чем подразумевают современное ФП
источник

T

TGG in Lisp Forever
akater
Нафига спорить, что ФП, что не ФП, что ООП, что не ООП?

Как хорошо, что никто не спорит, какое программирование императивное, а какое нет.
Учитывая, что нынешнее "ООП" ни разу не ООП
источник

T

TGG in Lisp Forever
Hirrolot
меня это не интересует, я говорю про то, чем подразумевают современное ФП
Это неважно. Никто не слушает безграмотных людей.
источник

T

TGG in Lisp Forever
Они могут считать Раст ФП-языком. ФП-языком Раст это не сделает.
источник

a

akater in Lisp Forever
Давно использую макрос funcall-if, который сокращаю до fif

(macroexpand-1
`(fif windows-style-newlines
      #'1-
      line-end-position))
;; =>
(if windows-style-newlines
   (funcall #'1- line-end-position)
   line-end-position)



А какие интересные макросы вы используете?  Это лучше, чем обсуждать, что ФП, а что нет.
источник

a

anton in Lisp Forever
а я не использую макросы, потому что в автолиспе нет макросов
источник

a

anton in Lisp Forever
а вот недавно придумал такую идиому (наверное), cdr-ить список, и параллельно консить головы в другой "обратный" список, таким образом можно ходить по списку туда-сюда. Я уверен что в коммон лиспе есть что нибудь стандартное для этого.
источник

DE

Denis Ermolenko in Lisp Forever
anton
а вот недавно придумал такую идиому (наверное), cdr-ить список, и параллельно консить головы в другой "обратный" список, таким образом можно ходить по списку туда-сюда. Я уверен что в коммон лиспе есть что нибудь стандартное для этого.
А не проще ли сразу использовать doubly linked list? Но для этого надо чтобы были структуры или классы в автолиспе. В Common Lisp на CLOS всякие структуры данных без проблем сделать.
источник

a

anton in Lisp Forever
Denis Ermolenko
А не проще ли сразу использовать doubly linked list? Но для этого надо чтобы были структуры или классы в автолиспе. В Common Lisp на CLOS всякие структуры данных без проблем сделать.
двусвязный список невозможно сделать иммутабельным
источник

DE

Denis Ermolenko in Lisp Forever
anton
двусвязный список невозможно сделать иммутабельным
Верно
источник

a

anton in Lisp Forever
а тут и иммутабельность сохраняется, но ты почти бесплатно ходишь туда-сюда и редактируешь элементы
источник

a

akater in Lisp Forever
anton
а вот недавно придумал такую идиому (наверное), cdr-ить список, и параллельно консить головы в другой "обратный" список, таким образом можно ходить по списку туда-сюда. Я уверен что в коммон лиспе есть что нибудь стандартное для этого.
(push (pop source) target), что ли?
источник

a

anton in Lisp Forever
akater
(push (pop source) target), что ли?
да, тип того, ну если мы хотим выкинуть элемент, мы его не пушим, если хотим вставить новый, соответственно понятно что
источник

T

TGG in Lisp Forever
anton
да, тип того, ну если мы хотим выкинуть элемент, мы его не пушим, если хотим вставить новый, соответственно понятно что
А напишите, пожалуйста. Просто интересно посмотреть конкретно.
источник

a

akater in Lisp Forever
anton
да, тип того, ну если мы хотим выкинуть элемент, мы его не пушим, если хотим вставить новый, соответственно понятно что
Нет.  Ничего не понятно.
источник