在Haskell中创建交互式程序

时间:2012-07-15 15:03:11

标签: haskell user-interaction

我必须编写3个函数:一个用于将华氏温度转换为摄氏温度,一个用于将摄氏温度转换为开尔文值,另一个用于将华氏温度转换为开尔文值,使用两个第一函数。

我之前从未玩过Haskell所以这花了我相当长的时间,虽然现在我看到它很简单。

无论如何,我需要为前两个函数创建交互式Haskell程序,并使用它们用管道编写和执行,以获得与第三个函数等效的函数。我一直在阅读管道,看起来很简单。我的主要问题似乎是使功能互动。

非常感谢任何帮助,提示和资源!

1 个答案:

答案 0 :(得分:4)

解决问题时,interact函数应该非常有用。因为UNIX约定是进程应该使用文本(而不是数字,如温度)进行通信,这意味着interact函数包含了String s并返回String s的函数。这意味着你必须将华氏度/摄氏度函数包装在新函数中,这些函数接收并返回字符串而不是数字。

作为一个让你入门的例子,这个程序高举所有赋予它的字符串:

module Main (main) where

import Data.Char (toUpper)

main :: IO ()
main = interact upperCase

upperCase :: String -> String
upperCase = map toUpper

你可以用:

编译它
ghc uppercase.hs

...然后你可以通过这样做来使用它(在Linux上):

echo "bla" | ./uppercase
# Result: "BLA"