在Haskell中创建交互式程序

在Haskell中创建交互式程序,haskell,user-interaction,Haskell,User Interaction,我必须编写3个函数:一个用于将华氏温度转换为摄氏温度,一个用于将摄氏温度转换为开尔文,第三个用于使用前两个函数将华氏温度转换为开尔文 我以前从未和Haskell一起玩过,所以这花了我相当长的时间,尽管现在我发现这很简单 无论如何,我需要为前两个函数创建交互式Haskell程序,并使用它们编写和执行管道,以便获得与第三个函数等效的程序。我一直在读关于管道的书,看起来很简单。我的主要问题似乎是使函数具有交互性 非常感谢您提供的任何帮助、提示和资源 该函数在解决问题时应该非常有用。因为UNIX惯例是进

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

我以前从未和Haskell一起玩过,所以这花了我相当长的时间,尽管现在我发现这很简单

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

非常感谢您提供的任何帮助、提示和资源

该函数在解决问题时应该非常有用。因为UNIX惯例是进程应该使用文本(而不是数字,如温度)进行通信,这意味着
interactive
函数包装接受
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”|/大写
#结果:“BLA”

非常感谢您的及时回复!对不起,如果我太笨了,请容忍我。我所做的是为前两个函数(celsiusToKelvin.hs和fahrenheittokelics.hs)创建一个单独的.hs文件。我的理解是,通过使用管道,我应该能够做到:celsiusToKelvin.exe x | fahrenheittocecillics.exe,它应该给我与我的第三个函数相同的答案:
fahToKel z=celToKel(fahToCel z)
交互函数适用吗?如果你的程序应该使用管道,您不能在华氏温度为摄氏温度时执行
celsiusToKelvin x
。这将要求
celsiusToKelvin
程序将其输入读取为参数(位于该位置的
x
),而不是从标准输入流读取。相反,您必须使用echo x | celsiusToKelvin | fahrenheittocecills。内置的
echo
程序将其参数写入其标准输出流,然后通过管道将其定向到
celsiusToKelvin
程序的标准输入流。这将产生正确的结果。谢谢,这正是我所需要的。它工作得很好。我的作业打了分,这个问题我得了满分。我的问题是,我的celsiusToKelvin和FahrenheitToCelsius程序都有字符串作为用户的提示,当然,当将它们连接在一起时,这些字符串就不起作用了。我把它们拿了出来,它成功了!