1

いつでもどこでも呼び出さなければならない関数がいくつかあります。例えば:

(defun winG (qty pb ps)
    (- (* qty ps (- 1 SXF YHS)) (* 2 GHF) (* qty pb (+ 1 SXF))))

(defun winQ (qty pb ps)
    (- (* qty ps (- 1 SXF)) (* 2 GHF) (* qty pb (+ 1 SXF))))

(defun stopLoss (qty pb &optional (lossRate 0.02))
    (let ((tot (* qty pb (+ 1 SXF))))
        (format t "Stop Loss at:~$~%" (- pb (/ (* tot lossRate) qty)))
        (format t "Lost Money:~$(~d%)~%" (* tot lossRate) (* 100 lossRate))))

(defun div618 (p1 p2)
    (let ((ratio '(0. 0.191 0.236 0.382 0.5 0.618 0.809 1.))
        (price #'(lambda (r) (if (<= p1 p2) (+ p1 (* (- p2 p1) r)) (- p1 (* (- p1 p2) r))))))
        (if (<= p1 p2)
            (dolist (r (reverse ratio)) (format t "-------~3$   ~$-------~%" r (funcall price r)))
            (dolist (r ratio) (format t "-------~3$  ~$-------~%" r (funcall price r))))))

今では、関数をロードできる stumpwm を使用しています。関数を起動すると、ホットキーを押すだけでこれらの関数を呼び出すことができ、いつでもどこでも評価ウィンドウを開くことができます。とても便利です。ただし、stumpwm は xmonad ほど安定していません。したがって、stumpwm の代わりに xmonad を使用したいので、haskell を使用してそれらの Common Lisp 関数を実装することを気にしません。

どんな提案でも大歓迎です!

4

1 に答える 1

1

あなたはこのようなものを介してこれを行うことができるはずです

myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
    [ ((modm,    xK_F1     ), spawn $ XMonad.terminal conf) --starts the terminal
    , ((mod4Mask,xK_F1     ), spawn "gvim" >> -- you can concatenate commands too
                              spawn "notify-send -t 1000 gVim" >> 
                              focusUrgent) -- or haskell functions
    , ((mod4Mask,xK_F2     ), spawn "lisp evaluate lispy function") 
    , ((modm,    xK_F3     ), haskellFunctionPortedFromLisp )]

お役に立てれば。

于 2012-11-09T08:37:52.603 に答える