[英]Aliases in Haskell/GHCI
是否可以在ghci.conf文件中設置別名?
例如,我在alias sbh='cd Desktop/Sandbox/Haskell'
有alias sbh='cd Desktop/Sandbox/Haskell'
,它可以讓我快速跳轉到指定的文件夾。 通過在ghci.conf文件中添加別名,可以在ghci中做同樣的事情嗎?
我已經在ghci.conf中有一些命令,但是我希望設置多個別名來跳轉到文件夾位置,而不必一直使用:cd home/sandbox/foo/bar
。 我無法在谷歌上找到任何東西,所以要么以前從未考慮過,要么只是遺漏了一些非常簡單的東西。
:def
命令可以這樣做:
:def sbh const $ return ":cd Desktop/Sandbox/Haskell"
正如您所看到的,它只是給出一個替換字符串要復雜一點:它采用String -> IO String
類型的Haskell函數String -> IO String
,新定義的命令應用於其參數字符串以計算要運行的新命令。
然后在GHCI :sbh
調用。
GHCI宏應該可以滿足您的需求。 請參閱: https : //www.haskell.org/ghc/docs/7.6.2/html/users_guide/ghci-commands.html作為參考。
搜索“宏”(或:def,這是定義宏的命令)。 您可以將它們放在ghci.conf文件中。
例如(來自上面指出的相同URL):
Prelude> let mycd d = Directory.setCurrentDirectory d >> return "" Prelude> :def mycd mycd Prelude> :mycd ..
我希望這有幫助。
可能不完全是你需要的,但是如果快速跳轉功能足夠,請嘗試將其作為第一個修復(由:sbh
調用):
:def sbh (\arg -> return ("System.Directory.setCurrentDirectory \"Desktop/Sandbox/Haskell\""))
您以后的解決方案可能會使用arg
引用,如:
:def sbh (\arg -> return ("System.Directory.setCurrentDirectory " ++ "\"" ++ args ++ "\""))
調用后者:sbh Desktop/Sandbox/Haskell
然后。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.