【发布时间】:2019-03-14 13:10:53
【问题描述】:
我尝试将 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格式。