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

时间:2018-07-17 14:31:09

标签: 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]不同,但是据我所知,这完全是不可能的。

2 个答案:

答案 0 :(得分:0)

您可以使用GHC API来编译(包括进行类型检查)作为ValueError: Number of labels is 1. Valid values are 2 to n_samples - 1 (inclusive) 给出的任意代码。

答案 1 :(得分:0)

由于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)