Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell xmonad可以随时提供我们常用的函数吗?_Haskell_Xmonad - Fatal编程技术网

Haskell xmonad可以随时提供我们常用的函数吗?

Haskell xmonad可以随时提供我们常用的函数吗?,haskell,xmonad,Haskell,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

我们有一些函数需要在任何时间和地点被调用。例如:

(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))))))
(除风翼(数量pb ps)
(((*数量ps(-1 SXF YHS))(*2 GHF)(*数量pb(+1 SXF)))
(除霜winQ(数量pb ps)
(((*数量ps(-1 SXF))(*2 GHF)(*数量pb(+1 SXF)))
(除停止损耗(数量pb和可选(损耗率0.02))
(总计(*数量pb(+1 SXF)))
(格式t“止损时间:~$~%”(-pb(/(*tot lossRate)数量)))
(格式t“损失金额:~$(~d%)~%”(*tot损失率)(*100损失率)))
(第618分册第1分册第2分册)
(let((比率)(0.0.191 0.236 0.382 0.5 0.618 0.809 1.))

(price#’(lambda(r)(if(你应该可以通过这样的方式来实现

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 )]

希望这能有所帮助。

您应该可以通过这样的方式来实现这一点

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 )]

希望这有帮助。

这些看起来不像窗口管理功能;您只是在问如何启动{lisp,Haskell}来自xmonad的REPL?stumpwm是一个完整的CL环境。因此,您可以像普通REPL一样连接到它和任何评估。并且您不需要启动另一个REPL。我只希望xmonad调用我们的函数而不是一个完整的REPL。这些函数看起来不像窗口管理函数;您只是问如何启动{lisp,Haskell}来自xmonad的REPL?stumpwm是一个完整的CL环境。因此,您可以像普通REPL一样连接到它和任何评估。并且您不需要启动另一个REPL。我只希望xmonad调用我们的函数而不是一个完整的REPL。它可以工作,但没有人希望为每个函数绑定一个键。因为有许多函数。您可以尝试使用
ghci
用于交互式内容-您可以将其设置为在模块文件中加载您的函数。独立ghci可以工作,但未与xmonad集成。可能运行xmonad的盒子尚未安装haskell。有xmonad附加功能,但似乎很难使其工作:(它可以工作,但没有人想为每个函数绑定一个键。因为有很多函数。你可以尝试使用
ghci
进行交互-你可以将它设置为在模块文件中加载你的函数。独立的ghci可以工作,但它没有与xmonad集成。可能运行xmonad的盒子没有安装haskell。有xmonad-extras,但似乎很难让它工作:(