相关疑难解决方法(0)

Haskell:解析命令行参数

这更像是一个风格问题,而不是一个如何.

所以我有一个需要两个命令行参数的程序:一个字符串和一个整数.

我这样实现了它:

main = do
  args@(~( aString : aInteger : [] ) ) <- getArgs
  let parsed@( ~[(n,_)] ) = reads aInteger
  if length args /= 2 || L.null parsed
    then do
      name <- getProgName
      hPutStrLn stderr $ "usage: " ++ name ++ " <string> <integer>"
      exitFailure
    else do
      doStuffWith aString n
Run Code Online (Sandbox Code Playgroud)

虽然这有效,但这是我第一次真正在Haskell中使用命令行参数,所以我不确定这是否是一种非常尴尬和难以理解的方式来做我想要的.

使用惰性模式匹配工作,但我可以看到它是如何被其他编码器所厌恶.并且使用read来查看我是否有一个成功的解析在写它时肯定感到尴尬.

有没有比较惯用的方法呢?

haskell command-line-arguments

27
推荐指数
4
解决办法
1万
查看次数

使用Haskell输入数据

回到故事:为了更好地理解Haskell和函数式编程,我给自己做了一些任务.我的第一个任务是创建一个程序,可以查看数据集(一组数字,博客中的单词等),搜索模式或重复,对它们进行分组并报告它们.

听起来很容易.:)

问题:我希望程序首先从文本文件中的数据创建列表变量.我熟悉readFile函数,但我想知道是否有更优雅的方式来输入数据.

例如,我想允许用户在命令行中输入类似的内容来加载程序和数据集.

./haskellprogram textfile.txt

是否有允许这个功能的功能?

io shell haskell functional-programming machine-learning

5
推荐指数
1
解决办法
336
查看次数