Создание интерактивной программы на Хаскеле

Мне пришлось написать 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"
Другие вопросы по тегам