Это разновидность базового типа. Используется для представления литералов с помощью фигурных скобок {}.
key может быть представлен двумя способами: строкой или ключевым словом. Ключевое слово — это строка, начинающаяся с двоеточия :.
Следующие две формы могут представлять собой map:
hash-map: принимает чётное количество параметров и возвращает новый mal хеш-таблицу, где ключи — это параметры с нечётными позициями, а их значения соответствуют параметрам с чётными позициями. По сути, это функция в форме буквального синтаксиса {}reader.
map?: принимает один параметр. Если параметр является хеш-таблицей, то возвращает true (значение true в mal), иначе возвращает false (значение false в mal).
assoc: принимает одну хеш-таблицу в качестве первого параметра, остальные параметры — это пары ключ/значение, которые необходимо связать (объединить) с хеш-таблицей. Обратите внимание, что исходная хеш-таблица не изменяется (помните, что значения в mal неизменяемы), а новая хеш-таблица, полученная путём объединения ключей/значений из исходной таблицы и параметров, возвращается в качестве результата.
dissoc: принимает одну хеш-таблицу в качестве первого параметра, остальные параметры — это ключи, которые нужно удалить из хеш-таблицы. Как и в предыдущем случае, исходная таблица остаётся неизменной, но возвращается новая таблица с удалением указанных ключей. Ключи, которых нет в исходной таблице, игнорируются.
get: принимает хеш-таблицу и ключ, возвращает значение из хеш-таблицы, соответствующее этому ключу. Если ключа нет в таблице, возвращает nil.
contains?: принимает хеш-таблицу и ключ. Возвращает true (значение true в mal), если ключ присутствует в таблице, иначе возвращает false (значение false в mal).
keys: принимает хеш-таблицу и возвращает список (значение списка в mal), содержащий все ключи из таблицы.
vals: принимает хеш-таблицу и возвращает список (значение списка в mal), содержащий все значения из таблицы.
Обратите внимание, что все вышеперечисленные методы не имеют побочных эффектов, то есть не изменяют исходные значения. Если вы хотите это сделать, рекомендуется использовать atom или повторно def!
(gensym)
=> каждый раз разное!
Нечётное число параметров: один — условие, другой — возвращаемое значение.
(def! ten-test (lambda [data]
(cond
(> data 10) 1
(= data 10) 0
(< data 10) -1)))
(ten-test 15)
=> 1
(ls)
=> (. .. mal)
(ls "mal")
=> (. .. hello.mal)
(read-file "mal/hello.mal")
=> "(+ 1 1)"
Файл a.mal:
(def! test (lambda [x] (prn x)))
(load-file "a.mal")
=> nil
(test "x")
=> "x"
=> nil
TODO: другие основные функции
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )