2012-11-09 109 views
1

我們有一些功能需要在任何時間和地點被調用。例如:xmonad可以隨時使用我們常用的功能嗎?

(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它可以載入我們的功能一旦啓動,我們可以僅僅通過敲擊熱鍵在任何時間和地點,打開其窗口的eval調用這些函數。這非常方便。然而,樹樁並不像xmonad一樣穩定。所以我們希望使用xmonad而不是stumpwm,我們不介意使用haskell實現這些Common Lisp函數。

任何建議表示讚賞!

+0

這些看起來不像窗口管理功能;你只是問如何從xmonad開始{lisp,Haskell} REPL? –

+0

樹樁是一個完整的CL環境。所以你可以連接到它和任何評估就像普通的REPL。你不需要啓動另一個REPL。我只是想讓xmonad調用我們的函數,而不是一個complele REPL。 –

回答

1

,你應該能夠通過的東西要做到這一點像這樣

myKeys [email protected](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)] 

希望這會有所幫助。

+0

它可以工作,但沒有人願意將鍵綁定到每個函數。因爲有很多功能。 –

+1

你可以嘗試使用'ghci'做互動的東西 - 你可以設置它來將你的功能加載到模塊文件中。 – epsilonhalbe

+0

獨立ghci的作品,但它沒有與xmonad集成。也許運行xmonad的盒子沒有安裝haskell。 –

相關問題