Как создать битовый массив в общем лиспе? - PullRequest
1 голос
/ 11 июля 2020

После часа поиска в Google я должен признаться, что, хотя я нахожу много документации о функциях, работающих с битовыми массивами, я не могу найти ни одной ссылки о том, как на самом деле создать битовый массив.

Прямо сейчас мне кажется, что некоторые массивы с другими типами элементов могут обрабатываться как битовые массивы ИЛИ, что можно использовать (make-array :element-type (???)), где я не мог найти никаких объяснений относительно того, что поместить туда, где я написал "?? ? ".

Итак, хотя это, вероятно, очевидно для всех, я понятия не имею, как создать битовый массив. Я знаю, как написать буквальный битовый массив, но если мне нужен битовый массив, скажем, с 2 ^ 16 битами - как мне это сделать?

Ответы [ 2 ]

4 голосов
/ 11 июля 2020

Вы правы, используя make-array, просто используйте 'bit в качестве типа элемента. Попробуйте (make-array initial-size :element-type 'bit). Символ BIT обозначает битовый тип и может быть заменен любым другим спецификатором типа, чтобы создать массив, содержащий объекты этого типа. В этом примере initial-size - это просто переменная, содержащая целое число.

2 голосов
/ 12 июля 2020

Другой способ создания битового вектора:

> (make-sequence '(vector bit) 10)
#*0000000000
...