Vim and dvorak
У кого-нибудь есть опыт использования?
У кого-нибудь есть опыт использования?
Доброго времени суток.
В большинстве случаев, данная проблема решалась без каких-либо неприятностей по средством подписывания типа, но при работе с mongoDB это приходится делать очень часто для одного из операторов:
(=:) :: Val v => Label -> v -> Field
foo = "aoeu" =: "aeou"
foo' = "aoeu" =: ("aeou" :: String)
Другой способ (сейчас практикую), создание функции с более жёстким типов (в данном случае с типом, а именно:
(=::) :: Label -> String -> Field
(=::) = (=:)
Доброго времени суток.
Когда подключены два монитора, появляется шорткат Win+p, который переключает режимы мониторов, что невероятно сбивает, так как это один из ходовых шортувтоы в емаксе с эргономической раскладкой.
Собственно вопрос, где можно найти, как его вырубить нафиг. Смотрел все стандартные менюшки + gconf-editor (мог и пропустить, в принципе).
Дистрибутив - linuxmint 12 и gnome 3.
Доброго времени суток.
Задача простая, есть массив чисел. Необходимо посчитать сколько значений в попало в заданные интервалы. Два решения (оба скучные и слишком ручные):
let r1 = 580
let r2 = 1000
let r3 = 1500
let r4 = 5500
-- (1)
print $ length $ filter (\x -> x < r1) result
print $ length $ filter (\x -> r1 < x && x < r2) result
print $ length $ filter (\x -> r2 < x && x < r3) result
print $ length $ filter (\x -> r3 < x && x < r4) result
print $ length $ filter (\x -> r4 < x) result
-- (2)
print $ show $ foldl (\(a,b,c,d,e) x
-> case x of
x | x < r1 -> (a+1,b,c,d,e)
x | x < r2 -> (a,b+1,c,d,e)
x | x < r3 -> (a,b,c+1,d,e)
x | x < r4 -> (a,b,c,d+1,e)
otherwise -> (a,b,c,d,e+1)
) (0, 0, 0, 0, 0) result
В генерируемый код не смотрел.
Доброго времени суток.
Нужно сгенерировать класс вида:
data Port_name = Port_name
class WithPort_name where
name :: d -> PortInstance d Port_name
name = \d -> PortInstance d Port_name
DataD [] typeName [] [NormalC typeName []] []...
В случае если использовать нотацию [d| |], то он не хочет подставлять из окружения значения переменных, или я не знаю, как его об этом правильно попросить.
В запись хранит списки. Необходимо в эти списки добавлять новые элементы. Типы списков разные. Сейчас это делается так (для каждого поля своя функция add)z
data T = T {a :: [T1], b :: [T2]}
add state v = let T {a = vs} = state in
state {a = v:vs}
Возможно ли это выразить (интуитивно, это может быть как-то выражено с использованием экзистенциальных типов, но как)?
Как можно преобразовать таким образом тип? У меня получилось вот так:
\x -> fromInteger $ toInteger x
Но уж как-то слишком страшно.
Доброго времени суток. В качестве предстоящей бакалаврской хочу попробовать себя на ниве компилятора строения. Писать планируется либо на Haskell (есть какой-то опыт) или на Ocaml (совсем не знаком). Какой из языков этих языков лучше подходит с трудом представляю.
Плюс в сторону Ocaml - наличие Zoo как хорошего примера.
Компилировать планируется в байт код какой-нибудь ВМ. Есть необходимость реального времени, какие для этого лучше посмотреть?
Когда создаётся новый тип данных, к примеру:
data Type1 = Type1 { first :: int, second :: int}
data Type2 = Type2 { first :: int, second :: int}
Происходит перекрытие имён first и second. Если способ это избежать? Есть ли возможность в принципе избежать создание функций доступа, дабы доставать значения исключительно через pattern matching.
Есть желание повесить на \C-tab. В графике работает без проблем, а в консоли не отлавливает нажатие. Причём если назначать интерактивно через global-set-key - не работает. Через local-set-key - работает.
(local-set-key (read-kbd-macro "<C-tab>") 'fold-dwim-toggle)
(local-set-key [(control tab)] 'fold-dwim-toggle)
(local-set-key (kbd "C-TAB") 'fold-dwim-toggle)
(local-set-key (kbd "C-<tab>") 'fold-dwim-toggle)
(local-set-key "\C-TAB" 'fold-dwim-toggle)
(local-set-key "\C-tab" 'fold-dwim-toggle)
Вот такие варианты пробовал, успеха не принесли. Есть другие способы?
GNU Emacs 22.1.1 (mac-apple-darwin)
Необходимо вставить в макросе кусок кода, который либо вставляется, либо опускается в зависимости от заданного ключа.
(defmacro foo (&key (var 0 var-p))
`(,(if var-p var 'clear-space)))
(foo :var 1)
Собственно совсем не понимаю как сделать в приведёном выше примери clear-space истинно пустым местом, кроме как раскидать всё на 2 ветки в самом начале, так как это было бы сильно не желатильно в виду сильного разрастания кода. Может есть какой-то символ разделитель, или метод?
(loop for a in '(a b c d)
and b in '("1" "2" "3" "4")
with cons = (concatenate 'string
(symbol-name a)
b)
do (format t "~a ~a ~a~%" a b cons)
collect cons)
Печатает на экран
A 1 NIL
B 2 NIL
C 3 NIL
D 4 NIL
Возвращает список из «NIL». А хотелось бы список («a1» «b2» «c3» «d4»)
Необходимо создать объект класс примерно такой.
(defclass c1 () ((subclass)))
subclass - объект другого класса, которому для инициализации надо указать поле, допустим key. Есть ли возможность указать в make-instance значение, которое не будет записано в слот или какой-нибудь другой путь передать данные без дублирования их с1.
Доброго времени суток.
Необходимо - создать окно по нажатию кнопки, пеключить в него фокус и создать свои независимые элементы. В идеале запретить переключения фокуса на родительское окно.
(defun main()
(ltk:with-ltk ()
(let* ((btn1 (make-instance 'ltk:button
:text "new"
:command (lambda () (sub-win))))
(btn2 (make-instance 'ltk:button
:text "exit"
:command (lambda () (setf ltk:*exit-mainloop* T)))))
(ltk:pack btn1)
(ltk:pack btn2))))
(defun sub-win ()
(ltk:with-ltk ()
(let* ((btn1 (make-instance 'ltk:button
:text "exit"
:command (lambda () (setf ltk:*exit-mainloop* T)))))
(ltk:pack btn1))))
В таком варианте не могу найти, как переключить фокус на новое окно и заблокировать родительское. Также окна становятся совсем независимыми, и можно закрыть родительское, оставив дочернее работать.
(defun main()
(ltk:with-ltk ()
(let* ((btn1 (make-instance 'ltk:button
:text "new"
:command (lambda () (sub-win))))
(btn2 (make-instance 'ltk:button
:text "exit"
:command (lambda () (setf ltk:*exit-mainloop* T)))))
(ltk:pack btn1)
(ltk:pack btn2))))
(defun sub-win ()
(make-instance 'ltk:toplevel)
(let* ((btn1 (make-instance 'ltk:button
:text "exit"
:command (lambda () (setf ltk:*exit-mainloop* T)))))
(ltk:pack btn1)))
В мане с оф сайта найти ответы не удалось.
Есть желание написать макрос, что бы не приходилось часто писать конструкции вида (let ((head (car list)) (tail (cdr list))) код). Но возникли следующие проблемы:
(defmacro xxs (lst head tail &rest body)
`(let ((,head (car ,lst))
(,tail (cdr ,lst)))
,body))
(xxs '(1 2 3) 'x 'xs
'(+ x (car xs)))
Выдаётся следующая ошибка:
LET: illegal variable specification #1=('X (CAR '(1 2 3)))
Суть ошибки вроде бы ясна, а вот способ решения не придумать.
Так же не знаю как можно расположить дерективы &option &key &rest, что бы в функции можно было бы указывать по желанию имена head и tail.
import Data.Bits
args value list = foldr f 0 $ zip (reverse list) [0..]
where
f x (a,b)
| testBit value a = setBit x 1
| otherwise = clearBit x 1
main = print $ args 12 [1,2,3]
По замыслу функция дожна вынимать из value биты с указынными номерами, и формировать из них новое число. В лист порядок битов обратный.
Вывод ошибки
No instance for (Bits (Int, t))
arising from a use of `args' at main.hs:15:15-29
Possible fix: add an instance declaration for (Bits (Int, t))
In the second argument of `($)', namely `args 12 [1, 2, 3]'
In the expression: print $ args 12 [1, 2, 3]
In the definition of `main': main = print $ args 12 [1, 2, 3]
Возникла проблема, надо из строки вынуть участки которые в скобках. Причём скобки могут быть вложенными (к примеру "( ())") на любую глубину. Есть ли способ это сделать только по средствам регулярных выражений? Выражения в стиле перл
код следующийй
import qualified Data.ByteString as B main = print "hello"
Импорт из документации ошибка
test.o(.text+0x217): In function `__stginit_Main_': : undefined reference to `__stginit_bytestringzm0zi9zi0zi1zi1_DataziByteString_'
Код пробовал компить на ghc 6.83 6.82 6.10 Вывод ошибки от первой. Где искать ошибку?
По идее, для замыкания необходима некоторая переменная, с локальной областью видимости. Но насколько можно судить, переменных в хаскел нету как факт, а лишь функции. Отсюда вопрос, возможны ли замыкания в принципе, и если да, то можно какой-нибудь примерчик...
Или какой-нибудь альтернативный метод, что-бы создать какой-либо общий сторедж данных (к примеру список), для накопление в нём данных от 2-х разных потоков?
Доброго времени суток.
В .emacs есть след строки:
(setq
ispell-extra-args (quote ("" "-a"))
ispell-have-new-look t
ispell-local-dictionary "russian"
ispell-local-dictionary-alist (quote (("russian" "[АБВГДЕЖЗИЙКЛМНОПРСТУФХЧШЩЪЬЮЯабвгдежзийклмнопрстуфхцшщюя]" "[^АБВГДЕЖЗИЙКЛМНОПРСТУФХЧШЩЪЬЮЯабвгдежзийклмнопрстуфхцшщюя]" "" nil ("-d" "ru-yo") nil koi8-r)))
ispell-message-dictionary-alist (quote (("" . "")))
ispell-program-name "aspell")
После их ручного исполнения (\C-x \C-e) проверка орфографии работает на ура везде. После загрузки не работает. Есть идеи?
следующие → |