我必须编写3个函数:一个用于将华氏温度转换为摄氏温度,一个用于将摄氏温度转换为开尔文值,另一个用于将华氏温度转换为开尔文值,使用两个第一函数。
我之前从未玩过Haskell所以这花了我相当长的时间,虽然现在我看到它很简单。
无论如何,我需要为前两个函数创建交互式Haskell程序,并使用它们用管道编写和执行,以获得与第三个函数等效的函数。我一直在阅读管道,看起来很简单。我的主要问题似乎是使功能互动。
非常感谢任何帮助,提示和资源!
答案 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"