Исправление Princesska, (текущая версия) :
Cмотри. Если ты хочешь просто вбить эти данные себе и забыть про них, то можно действительно их подгружать как отдельный модуль, описав их в типах данных языка. Это будет быстрее и проще, да и если ты единственный, кто имеет с этими данными дело, то, наверное, и самый правильный вариант. Но если их в будущем потребуется часто менять, и менять, возможно, кому-то другому – лучше заранее продумать, как их хранить в каком-нибудь другом представлении. Просто подумай об этом.
Наиболее простым (но наименее производительным, имей в виду!) вариантом будет хранить данные в виде списка из ассоциативных списков:
(list '( ;; здесь описываем какой-нибудь двигатель:
'('model . "Модель такая-то")
'('spinning-speed . 100) ;; или какая там у тебя скорость
'(...) ;; и так далее
...)
'( ;; и вот ещё один:
'('model . "...")
'('spinning-speed . 200)
'(...)
)
...)
Ассоциативный список – это такой список, в котором находятся пары из ключа и значения (именно в этом порядке), и он выступает таким словариком. Значения вытаскиваются так:
(assq v lst) → (or/c pair? #f)
Например, вот такое выражение:
(assq 'c (list (list 'a 'b) (list 'c 'd) (list 'e 'f)))
Вернёт вот это:
'(c d)
То есть, нужную пару из ключа и значения. Искать двигатель по току, моменту и прочему можно с помощью filter:
(filter pred lst) → list?
Например, вот так можно отфильтровать положительные числа:
(filter positive? '(1 -2 3 4 -5))
Но вообще, советую использовать хэш-таблицы. Они гораздо быстрее работают, и вообще это больше по уму.
Исходная версия Princesska, :
Cмотри. Если ты хочешь просто вбить эти данные себе и забыть про них, то можно действительно их подгружать как отдельный модуль, описав их в типах данных языка. Это будет быстрее и проще, да и если ты единственный, кто имеет с этими данными дело, то, наверное, и самый правильный вариант. Но если их в будущем потребуется часто менять, и менять, возможно, кому-то другому – лучше заранее продумать, как их хранить в каком-нибудь другом представлении. Просто подумай об этом.
Наиболее простым (но наименее производительным, имей в виду!) вариантом будет хранить данные в виде списка из ассоциативных списков:
(list '('('model . "Модель такая-то")
'('spinning-speed . 100) ;; или какая там у тебя скорость
'(...) ;; и так далее
...))
Ассоциативный список – это такой список, в котором находятся пары из ключа и значения (именно в этом порядке), и он выступает таким словариком. Значения вытаскиваются так:
(assq v lst) → (or/c pair? #f)
Например, вот такое выражение:
(assq 'c (list (list 'a 'b) (list 'c 'd) (list 'e 'f)))
Вернёт вот это:
'(c d)
То есть, нужную пару из ключа и значения. Искать двигатель по току, моменту и прочему можно с помощью filter:
(filter pred lst) → list?
Например, вот так можно отфильтровать положительные числа:
(filter positive? '(1 -2 3 4 -5))
Но вообще, советую использовать хэш-таблицы. Они гораздо быстрее работают, и вообще это больше по уму.