这是对在函数 Haskell 中定义变量中提出的问题的重新框架
我有一个函数,其开头如下所示:
recursiveLs :: FilePath -> IO [FilePath]
recursiveLs dir =
do
folderExists <- doesDirectoryExist dir
if folderExists
then ...
问题是,如何folderExists
在操作中分配给它之前明确声明类型?
这是对在函数 Haskell 中定义变量中提出的问题的重新框架
我有一个函数,其开头如下所示:
recursiveLs :: FilePath -> IO [FilePath]
recursiveLs dir =
do
folderExists <- doesDirectoryExist dir
if folderExists
then ...
问题是,如何folderExists
在操作中分配给它之前明确声明类型?
好吧,让我们尝试做你想做的事情ghci
:
> (a :: Integer) <- return 10
<interactive>:2:7:
Illegal type signature: `Integer'
Perhaps you intended to use -XScopedTypeVariables
In a pattern type-signature
因此,我们应该启用该编译指示。
> :set -XScopedTypeVariables
然后再试一次
> (a :: Integer) <- return 10
a :: Integer
现在我们a
等于10
,即Integer
:
> a
10
it :: Integer
另外,我相信你已经忘记了=
你的recursiveLs
功能,应该有类似的东西recursiveLs dir = do ...