gpt4 book ai didi

haskell - 使用无点表示法时如何强制类型

转载 作者:行者123 更新时间:2023-12-02 02:01:12 25 4
gpt4 key购买 nike

您好如何执行GHC函数类型,例如 Data.Text.read=~来自 Text.Regex.Posix 的运算符编写方法时?

例子:a=["1.22","3.33","5.55"]
没有免费点:b= map (\x-> read x ::Double) a
如何强制 read 的类型用无点符号?
b=map read::Double a或者
b= map (read . f1 .f2 .f3... . fn )::Double a (在编写方法时)其中 f1 , f2 ...fn是方法

或者更好的是如何指定 read属于方法链时的类型,但是 不在链的末端! :
b=map (f2 . read . f1 ) a

最佳答案

现代 Haskell 中最好的方法是使用 type application .

Prelude> :set -XTypeApplications 
Prelude> map (read @Double) ["1.22","3.33","5.55"]
[1.22,3.33,5.55]
Prelude> map (read @Int) ["1.22","3.33","5.55"]
[*** Exception: Prelude.read: no parse

这是因为 read有签名
read :: ∀ a . Read a => String -> a

因此 read @Double专业 a ~ Double因此
read @Double :: String -> Double

关于haskell - 使用无点表示法时如何强制类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52275817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com