簡體   English   中英

Haskell / GHCI中的別名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM