(let ((h (hash :equal-based)))
(awk (:inputs "word-dom-pairs")
(t (inc [h [f 0] 0])))
(awk (:inputs "word-vectors")
(t (whenlet ((count [h [f 0]]))
(fconv - : r)
(let* ((n-fn-pairs (zip (rest f) (range 2)))
(n-fn-sorted [sort n-fn-pairs > first]))
(each ((p [n-fn-sorted 0..count]))
(prn [f 0] (second p) (first p))))))))
Выполнить:
$ txr munge.tl
bank 4 3.2
bank 3 1.5
bank 2 0.9
God 3 2.1
Данные:
$ cat word-dom-pairs
car transport
car machine
bank economy
bank politics
bank parks
God religion
$ cat word-vectors
bank 0.9 1.5 3.2 -0.2 0.1
God 1.0 2.1 -0.5 0.7
rose 0.2 -1.8
Вот версия программы, свернутой в одно выражение awk
:
(awk (:inputs "word-dom-pairs" "word-vectors")
(:let (h (hash :equal-based)))
((= arg 1) (inc [h [f 0] 0]))
((= arg 2) (whenlet ((count [h [f 0]]))
(fconv - : r)
(let* ((n-fn-pairs (zip (rest f) (range 2)))
(n-fn-sorted [sort n-fn-pairs > first]))
(each ((p [n-fn-sorted 0..count]))
(prn [f 0] (second p) (first p)))))))
Два : input
из ранее отдельных awk
-ов объединяются в один. {{1 }} Мы заменяем безусловно истинные шаблоны t
селекторами, в зависимости от того, какой ввод обрабатывается, заданный переменной arg
. let
, который связывает переменную хеш-таблицы, сворачивается в предложение макроса awk : let
.
Если мы удалим предложение (: inputs ...)
, мы сможем передать файлы, используя пару аргументов командной строки:
$ txr munge.tl file1 file2
TXR Lisp - это типобезопасный динамический язык, в котором переменные должны быть определены перед назначением или использованием. Несуществующие переменные и ненужные строки не являются числовым нулем, а строки, которые выглядят как числа, не являются этими числами. Вот почему мы явно определяем существование хэш-таблицы и используем fconv
для явного преобразования второго и последующих полей в действительные числа ( r
).
Ваш / etc / mkinitcpio.conf должен выглядеть так:
HOOKS = "... клавиатура keymap encrypt ..."
Вам необходимо загрузить раскладку клавиатуры во время загрузки, что выполняется с помощью ловушки mkinitcpio. Убедитесь, что перехватчик keymap или sd-vconsole (в зависимости от того, используете ли вы перехватчики стиля sd- *) сработал до encrypt / sd-encrypt и регенерации вашего initrd.
Я использую шифрование luks для домашних и корневых файлов. Если это может помочь некоторым парням
vim /etc/vconsole.conf
Добавить это
KEYMAP=fr-latin9
а также проверьте это
vim /etc/mkinitcpio.conf
Он ДОЛЖЕН быть в порядке.
HOOKS=(base udev autodetect keyboard keymap consolefont modconf block encrypt lvm2 filesystems fsck)
Регенерировать initrd
mkinitcpio -P