Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/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
定义返回类型IO[a]Haskell_Haskell - Fatal编程技术网

定义返回类型IO[a]Haskell

定义返回类型IO[a]Haskell,haskell,Haskell,我想返回预期的类型IO[a] 我试过: 我想要的类型 fc :: [a] -> IO [a] fc a = sequence $ map show list > fc [1,2,3] > [1,2,3] 我能做什么 如果您有一个纯值,转换为一元值的方法是使用返回(又称纯)函数: fc :: [a] -> IO [a] fc list = return list 但是,如果要在列表上映射show函数,结果将是[String],因为函数show::a->String将任

我想返回预期的类型IO[a]

我试过: 我想要的类型

fc :: [a] -> IO [a]
fc a = sequence $ map show list

> fc [1,2,3]
> [1,2,3]

我能做什么

如果您有一个纯值,转换为一元值的方法是使用
返回
(又称
)函数:

fc :: [a] -> IO [a]
fc list = return list
但是,如果要在列表上映射
show
函数,结果将是
[String]
,因为函数
show::a->String
将任何值转换为
字符串,因此:

fc :: Show a => [a] -> IO [String]
fc list = return $ map show list
请注意,
显示一个
约束。它告诉编译器类型
a
,无论它是什么,都必须支持函数
show
。没有它,这样的函数就不会进行类型检查

sequence
函数完全是离题的,因为它将一个单数值列表转换为一个单数值列表。如果要使用该函数,则传递给它的列表必须是一个一元值列表,例如:

fc :: Show a => [a] -> IO [()]
fc list = sequence $ map print list
这里,
print
是一个打印值的
IO()
操作


如果你想得到更精确的答案,你需要更清楚地说明你想做什么。

如果你有一个纯值,转换成一元值的方法是使用
返回
(又称
)函数:

fc :: [a] -> IO [a]
fc list = return list
但是,如果要在列表上映射
show
函数,结果将是
[String]
,因为函数
show::a->String
将任何值转换为
字符串,因此:

fc :: Show a => [a] -> IO [String]
fc list = return $ map show list
请注意,
显示一个
约束。它告诉编译器类型
a
,无论它是什么,都必须支持函数
show
。没有它,这样的函数就不会进行类型检查

sequence
函数完全是离题的,因为它将一个单数值列表转换为一个单数值列表。如果要使用该函数,则传递给它的列表必须是一个一元值列表,例如:

fc :: Show a => [a] -> IO [()]
fc list = sequence $ map print list
这里,
print
是一个打印值的
IO()
操作


如果你想要一个更精确的答案,你需要更清楚地说明你想做什么。

好的,现在我们知道你想要一个
IO
类型。你想做什么?好的,现在我们知道你想要一个
IO
类型。你想做什么?