检查输入值的类型签名,并比较部分值

  • 本文关键字:比较部 类型 haskell
  • 更新时间 :
  • 英文 :


如果我要使用'((<-getLine',如何通过putStrLn检查输出值的类型签名?

numone <- getLine 
(show (typeOf numone))

当我使用它时,它会检查并打印单词"numone"的类型签名,而不是通过getLine函数输入的内容。有解决办法吗?

此外;

如何比较两个输入字符串的某个部分?如果我输入A12345和A12335,我正在寻找"它们在开始时都包含A123"的输出。到目前为止,我正在使用
if numone == numtwo then
putStrLn $ "They are the same and their types are " ++ (show (typeOf numone)) ++ " and " ++ (show (typeOf numtwo)) else putStrLn $ "They are not the same"

我之所以希望能够打印输入值的类型,是为了显示这些值是否相同,以及它们是否具有相同的类型。所以A123[String]与B123[String]不同,但正如我所知,这在我想要的情况下是不可能的。

您可以使用GHC API编译(包括类型检查(给定为String的任意代码块。

您无法在程序中找到值的类型,因为Haskell是静态类型的。

相反,使用GHCi:

> ghci
Prelude> :t "Hello!"
"Hello!" :: [Char]
Prelude> :t 12.3
12.3 :: Fractional a => a
Prelude> :t Just (*)
Just (*) :: Num a => Maybe (a -> a -> a)

最新更新