Создание интерактивной программы на Хаскеле
Мне пришлось написать 3 функции: одну для преобразования Фаренгейта в Цельсий, одну для преобразования Цельсия в Кельвин и третью для преобразования Фаренгейта в Кельвин, используя две первые функции.
Я никогда не играл с Haskell раньше, так что это заняло у меня довольно много времени, хотя теперь я вижу, что это довольно просто.
В любом случае, я должен создать интерактивные программы на Haskell для первых двух функций и использовать их для компоновки и выполнения с конвейерами, чтобы получить эквивалент третьей функции. Я читал на трубах, и это кажется достаточно простым. Моя главная проблема - сделать функции интерактивными.
Любая помощь, советы и ресурсы с благодарностью!
1 ответ
interact
Функция должна быть очень полезна при решении вашей проблемы. Поскольку соглашение UNIX гласит, что процессы должны взаимодействовать с использованием текста (а не чисел, например, температуры), это означает, что interact
функция оборачивает функции, которые принимают String
и вернуться 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"