Size: a a a

2020 January 19

a

akater in Lisp Forever
Pïg Grëënëst
а можешь показать?
Там довольно involved http://ix.io/27Pi Вроде ничего не забыл.
источник

a

akater in Lisp Forever
Таки забыл

(eval-when (:compile-toplevel :load-toplevel)
 (defun valid-type-p (x &optional env)
   (declare (ignorable env))
   (when #+sbcl (sb-ext:valid-type-specifier-p x env)
         #+ccl (ccl:type-specifier-p x)
         x)))
источник

a

akater in Lisp Forever
TOOLS> (define-predicate+ consp)
WARNING: redefining AKATER-TOOLS:CONSP+ in DEFUN
CONSP+
TOOLS> (disassemble *)
; disassembly for CONSP+
; Size: 31 bytes. Origin: #x5330EDBC                          ; CONSP+
; BC:       4881FA17001050   CMP RDX, #x50100017              ; NIL
; C3:       7407             JEQ L0
; C5:       8D42F9           LEA EAX, [RDX-7]
; C8:       A80F             TEST AL, 15
; CA:       7405             JEQ L1
; CC: L0:   BA17001050       MOV EDX, #x50100017              ; NIL
; D1: L1:   488BE5           MOV RSP, RBP
; D4:       F8               CLC
; D5:       5D               POP RBP
; D6:       C3               RET
; D7:       EBF8             JMP L1
; D9:       CC10             INT3 16                          ; Invalid argument count trap
NIL
источник

VL

Valeriy L in Lisp Forever
Круто!
источник

a

akater in Lisp Forever
akater
Таки забыл

(eval-when (:compile-toplevel :load-toplevel)
 (defun valid-type-p (x &optional env)
   (declare (ignorable env))
   (when #+sbcl (sb-ext:valid-type-specifier-p x env)
         #+ccl (ccl:type-specifier-p x)
         x)))
Это не будет правильно работать в Лиспах, которые там не указаны в readtime conditionals, очевидно. Мне неохота доделывать, уже давно, т.к. в остальных Лиспах, которые я использую, с этим там все менее понятно.
источник

PG

Pïg Grëënëst in Lisp Forever
какая-то вероятностная шняга
источник

PG

Pïg Grëënëst in Lisp Forever
а если тип неправильно будет угадан?
источник

a

akater in Lisp Forever
Pïg Grëënëst
а если тип неправильно будет угадан?
Ну да, это не супербезопасный определятор, и я не уверен, насколько тип вообще нужен, просто типы это моя слабость. Но все-таки по-моему тут маловероятна ошибка. Проблема не в том, что тип будет неправильно угадан, проблема в том, что shitp может, при существовании типа shit, тем не менее проверять не на принадлежность к нему. Я б сказал, это маловероятная ситуация.

listp+ только работать не будет, это надо помнить.
источник

PG

Pïg Grëënëst in Lisp Forever
я уже понял что это не для публикации фича
источник

a

akater in Lisp Forever
То есть, ситуация, когда есть тип shit, но shitp не эквивалентно проверке на этот тип, это явно плохая ситуация, так что меня этот момент совсем не тревожит.
источник

PG

Pïg Grëënëst in Lisp Forever
akater
Ну да, это не супербезопасный определятор, и я не уверен, насколько тип вообще нужен, просто типы это моя слабость. Но все-таки по-моему тут маловероятна ошибка. Проблема не в том, что тип будет неправильно угадан, проблема в том, что shitp может, при существовании типа shit, тем не менее проверять не на принадлежность к нему. Я б сказал, это маловероятная ситуация.

listp+ только работать не будет, это надо помнить.
а в схеме будет, азазазаз
источник

PG

Pïg Grëënëst in Lisp Forever
хз насколько это нужно, правда
источник

a

akater in Lisp Forever
Не нужно, по-моему. А consp+ я использую постоянно.
источник

PG

Pïg Grëënëst in Lisp Forever
а не проще паттерн матчингом?
источник

PG

Pïg Grëënëst in Lisp Forever
хотя мы о достаточно низкоуровневых вещах говорим, сам паттерн матчинг может быть через предикаты сделан
источник

a

akater in Lisp Forever
Pïg Grëënëst
а не проще паттерн матчингом?
Иногда зависимость от целой библиотеки паттерн-матчинга это явно оверкилл.
источник

a

akater in Lisp Forever
Например, для эффективного упрощения специфических алгебраических выражений я провожу много низкоуровневых операций с консами, и все. Важно, что «специфических». Речь тут опять-таки про cl-ledger, и там такова предметная область, что выражения это линейные комбинации в (левом или правом) векторном пространстве над вещ. числами. Pattern matching был бы приятен, но при таком сильном ограничении предметной области лучше написать автономный заведомо оптимизированный алгоритм без зависимостей.
источник
2020 January 20

PG

Pïg Grëënëst in Lisp Forever
круто, жалко только что этот observablehq для js
источник
2020 January 21

AE

Alexey Egorov in Lisp Forever
источник

O

O in Lisp Forever
источник