gpt4 book ai didi

haskell - 如何一次性查找多个函数的类型

转载 作者:行者123 更新时间:2023-12-01 18:43:15 25 4
gpt4 key购买 nike

如何一次性搜索length、take、drop、splitAt、!!replicate类型,而不需要输入:t length:t take:t drop 等,对于所有这些函数?

最佳答案

ghci 包括 :def命令。该命令的形式为 :def <name> <function> ,其中<name>是要定义的新命令,并且 <function>String -> IO String 类型的 Haskell 函数说明如何将新命令的参数转换为现有的命令链。我们可以利用这一点:我们将创建一个新命令 :manyt ,它获取名称列表并运行 :t在各个。为了简单起见,我将按空格进行分割;但如果您想询问许多表达式的类型而不仅仅是名称,您可能需要进行一些更复杂的定界/解析。所以,在 ~/.ghci ,添加这样一行:

:def manyt (\s -> Prelude.return (Prelude.unlines [":t " Prelude.++ n | n <- Prelude.words s]))

(过多的 Prelude 限定使得即使启用 -XNoImplicitPrelude 也能正常工作。)尝试一下:

> :manyt length take drop splitAt (!!) replicate
length :: Foldable t => t a -> Int
take :: Int -> [a] -> [a]
drop :: Int -> [a] -> [a]
splitAt :: Int -> [a] -> ([a], [a])
(!!) :: [a] -> Int -> a
replicate :: Int -> a -> [a]

关于haskell - 如何一次性查找多个函数的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49319970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com