Size: a a a

2021 April 07

a

akater in Lisp Forever
Ага, там #'true и #'false
источник

A

Aragaer in Lisp Forever
но и "логические" функции должны быть реализованы так, чтобы возвращать #'true и #'false вместо nil и t
источник

a

akater in Lisp Forever
Есть coerce, но он не будет приводить типы так.
источник

UT

Unknown T. in Lisp Forever
хм. то есть невозможно реализовать _if, чтобы он был один в один похож на оригинальный, из-за того, что в условии оператор вернет t/nil?
coerce видел, но он не сработал
источник

a

akater in Lisp Forever
Можно, например, сделать свой пакет my-if, написать, что my-if:t это #'true и т.д..  Будет «один в один» «похож».

Но цель неясна уже.
источник

UT

Unknown T. in Lisp Forever
Окей, спасибо. Да цель уже мне просто интересно, определить свой макрос с таким же поведением. Образовательная.
источник

UT

Unknown T. in Lisp Forever
Нельзя, нельзя перевести bool в int. Можно!
(or (and boolean 1) (or boolean 0))

(or (and nil 1) (or nil 0)) ; => 0
(or (and t 1) (or t 0)) ; => 1
источник

A

Aragaer in Lisp Forever
тут нюанс, что or и and реализованы как special form тоже
источник

UT

Unknown T. in Lisp Forever
Блин, ну ладно... Но думаю and и or в своем решении заиспользую всё равно, задачу ставил сделать именно if. Сейчас ещё потестил, через and и or вполне себе ветвление получается
источник

UT

Unknown T. in Lisp Forever
По идее if это (or (and condition 'then) 'else)
источник

a

akater in Lisp Forever
Я в самом начале указал, что кроме if и cond еще есть when и unless.  Потом собирался напомнить про and и or, потом про logior, …, но в итоге предложил переформулировать вопрос не дожидаясь этого. :-]
источник

VL

Valeriy L in Lisp Forever
Кому интересно, вмержили мой хотфикс в sly-asdf. Теперь должно работать с ECL
источник

DP

Dmitry Plesovskykh in Lisp Forever
(or (and 123 nil) 'else) ; => ELSE
- по твоему ожидаемый результат дает?
источник

DP

Dmitry Plesovskykh in Lisp Forever
так-то ожидаемый, но это правильный результат для семантики if? ) condition у нас выполняется, должны вернуть NIL, но возвращаем ELSE
источник

UT

Unknown T. in Lisp Forever
Да, кейс с nil не учтён.
источник

DP

Dmitry Plesovskykh in Lisp Forever
if это спецоп (в скобочках - не просто так)
источник

DP

Dmitry Plesovskykh in Lisp Forever
а зачем тебе? (defun t-nil-cast (tn)(if tn 1 0)) ; => ))
источник

a

akater in Lisp Forever
Можно с генсимом

`(or (and ,g ,then)
    (and (not ,g) ,else))


Можно return над then и block сверху.
источник
2021 April 08

MW

Merlin Wizard in Lisp Forever
Привет, подскажите пожалуйста статически типизированный лисп, только по-настоящему который проверяет типы, а не всякие чекеры
источник

IZ

Ilia Zviagin in Lisp Forever
SBCL
источник