LINUX.ORG.RU

История изменений

Исправление 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))

Но вообще, советую использовать хэш-таблицы. Они гораздо быстрее работают, и вообще это больше по уму.