Я пытаюсь передать параметр GET в функцию и объединить строку из результата
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Data.Monoid ((<>))
import Web.Scotty
f x = x <> x
main = do
scotty 3000 $ do
get "/f/:x" $ do
x <- param "x"
text ("f(" <> x <> ") = " <> f x)
Чтобы сделать мое приложение еще более интересным, я хочу использовать функцию, для которой требуется экземпляр типа аргумента Num, например.
f x = x * x
Как я могу преобразовать/прочитать x
в Num
(или Maybe...
) и преобразовать результат функции обратно в Data.Text.Internal.Lazy.Text
?
Я старался
text ("f(" <> x <> ") = " <> (show $ f $ read x))
что дает ошибки:
• Couldn't match expected type
‘text-1.2.3.1:Data.Text.Internal.Lazy.Text’
with actual type ‘[Char]’
Text
не то же самое, чтоString
, и это укусило многих людей, не только в Haskell. Скорее всего, вам потребуетсяimport qualified Data.Text as T
, а затем использовать функциюT.pack
для преобразованияString
(т.е.,[Char]
) в форматData.Text
. - person Bob Dalgleish   schedule 09.10.2018