4

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

我以前从来没有玩过 Haskell,所以这花了我相当长的时间,虽然现在我发现它很简单。

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

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

4

1 回答 1

4

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

作为一个让你开始的例子,这个程序将给它的所有字符串都大写:

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"
于 2012-07-15T15:18:56.110 回答