Size: a a a

Emacs — русскоговорящее сообщество

2021 September 12

D

Demoninhatter in Emacs — русскоговорящее сообщество
ок, а если мне в cdr списке нужно искать только по элементу с определенным индексом?
источник

a

akater in Emacs — русскоговорящее сообщество
Но я думаю, не надо тут говорить «массив», тут же ни одного массива нет в структуре.  Это alist.
источник

a

akater in Emacs — русскоговорящее сообщество
Непонятно.  Индекс это ж car.  Лучше пример написать.
источник

D

Demoninhatter in Emacs — русскоговорящее сообщество
ну вот найти из списка выше элемент где в значении есть “Red Pine”
источник

D

Demoninhatter in Emacs — русскоговорящее сообщество
и получить 2
источник

a

akater in Emacs — русскоговорящее сообщество
(cl-rassoc "Red Pine" '((3 "Red Pine")) :test #'member)

но test я б подкрутил
источник

a

akater in Emacs — русскоговорящее сообщество
Т.е. я б в идеале подкрутил до

(cl-rassoc "Red Pine" '((2 "Pine") (3 "Red Pine"))
 :test (lambda (x y) (cl-member x y :test #'string-equal)))
источник

D

Demoninhatter in Emacs — русскоговорящее сообщество
окей спс, это пример был, у меня там не строка, а чем 2 вариант лучше 1?
источник

A ß in Emacs — русскоговорящее сообщество
это уже чересчур
источник

a

akater in Emacs — русскоговорящее сообщество
Если по виду непонятно, то это как-то хреново (для Лиспа, типа).

В первом случае мы ищем, содержится ли элемент в cdr, используя некий стандартный предикат, а во втором — предикат, учитывающий наш специфический тип данных (строка).

Это не будет работать если в cdr'ах есть не только строки, но тут выглядит так, что только строки, так что я и уточнил.
источник

A ß in Emacs — русскоговорящее сообщество
assoc-string есть, а rassoc-string нету
источник

D

Demoninhatter in Emacs — русскоговорящее сообщество
Понял, мне 1 кейс более чем подходит т.к. тип всегда одинаков
источник

a

akater in Emacs — русскоговорящее сообщество
«тип всегда одинаков» звучит как будто лучше как раз использовать более специфичный предикат (необязательно string-equal, а просто предикат, подходящий для этого типа)

Я за это выступаю в основном потому что используя не тот предикат можно легко внезапно напороться на ошибку и не сразу заметить.  Ну и вообще я люблю когда типы проверяются.  Это не все любят, видимо.
источник

D

Demoninhatter in Emacs — русскоговорящее сообщество
любят, в типизированных языках 😃
источник

D

Demoninhatter in Emacs — русскоговорящее сообщество
для меня просто все еще непривычно и неочевидно что для разных типов используются разные методы сравнения (явно)
источник

S

Schnabelperchten in Emacs — русскоговорящее сообщество
окамл: а че всмысле
источник

a

akater in Emacs — русскоговорящее сообщество
Ого.  А как иначе-то?
источник

D

Demoninhatter in Emacs — русскоговорящее сообщество
Ну если примтивные типы (либо те что реализуют интерфейс eq) то через полиморфизм, 1=1 “a” = “a”..и тд
источник

D

Demoninhatter in Emacs — русскоговорящее сообщество
а cl-lib можно подключать в пакет? Это не она депрекейтнута?
источник

A ß in Emacs — русскоговорящее сообщество
можно
источник