Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.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
List 使用Haskell中的interact从输入创建列表_List_Haskell_Io_Functional Programming - Fatal编程技术网

List 使用Haskell中的interact从输入创建列表

List 使用Haskell中的interact从输入创建列表,list,haskell,io,functional-programming,List,Haskell,Io,Functional Programming,我从Haskell开始,一直在研究I/O机制。我阅读了interact函数,该函数以String->String类型的函数作为参数。我试着编写一个简单的程序,从stdin中提取数字,创建一个列表并逐行打印 import Data.List readIn = sort . map read . words writeOut = unlines . map show rangeList [n,m] = [n .. m] main = interact (writeOut . rangeList

我从Haskell开始,一直在研究I/O机制。我阅读了interact函数,该函数以String->String类型的函数作为参数。我试着编写一个简单的程序,从stdin中提取数字,创建一个列表并逐行打印

import Data.List

readIn = sort . map read . words 
writeOut = unlines . map show
rangeList [n,m] = [n .. m] 
main = interact (writeOut . rangeList . readIn)

由于某种原因,它不会打印数字。您能帮我一下吗?

交互
要求您使用Ctrl+D(或Windows上的Ctrl+Z)向stdin输入文件结尾(EOF);当我键入该组合时,输出将根据需要显示。这是必要的,因为正如所述,“来自标准输入设备的整个输入作为其参数传递给[interact]”;因此,您需要显式地向stdin结束的位置发送信号


(顺便说一句,我甚至不知道你是如何编译你的程序的;当我尝试时,GHC给了我很多“不明确的类型”错误。我必须添加类型签名才能让它工作,这时我发现上面的解决方案可以工作。)

快速评论:因为
范围列表
总是有两个值作为输入,使用2元组
(n,m)
可能比使用列表更好,因为列表应该可以有任意数量的值。至于该计划的其余部分,乍一看是绝对不错的;我现在试着运行它,看看是否能让它工作。