到目前为止,我尝试过3种语言:Haskell,Python,Java。
我有点不知所措。
我真正想做的是:
*MyModule> myfunction arg1
arg1a
所以我的论证实际上是一个包含真实换行符的字符串。 在Haskell的输入之上。
但是,我没有找到任何这方面的例子,当我用一个真正的命令行尝试这个时,我总是会崩溃,因为解释器或编译器假定在换行时肯定会有一个新的参数。 是的,我试图用""包围字符串。没有区别。
有没有明显的方法可以解决这个问题,我还没找到?
启用multiline会出现以下错误:
lexical error in string/character literal at character '\n'
根据要求:我实际使用的输入是:
3
this is a test
foobar
all your base
答案 0 :(得分:5)
GHCi会议:
Prelude> :{
Prelude| 3 +
Prelude| 4 +
Prelude| 5
Prelude| :}
12
如果您尝试在字符串中插入实际换行符,我担心Haskell确实禁止这样做,支持以下样式:
Prelude> :{
Prelude| putStr "Hello\n\
Prelude| \world!\n\
Prelude| \ -- THE END\n"
Prelude| :}
Hello
world!
-- THE END
在这里,我们需要将\n
用于显式换行符。另请注意,\
必须在行尾和下一行的开头使用 。后者\
之前的空格将被忽略,以允许任何缩进。
还要考虑这种风格:
Prelude> :{
Prelude| putStrLn $ unlines
Prelude| [ "Hello"
Prelude| , "world!"
Prelude| , " -- THE END"
Prelude| ]
Prelude| :}
Hello
world!
-- THE END
如果您只需要阅读输入,只需将其保存在文件中(例如test.txt
)并将其作为字符串读取:
Prelude> test <- readFile "test.txt"
Prelude> putStr test
5
this is a test
foobar
all your base
class
pony along