gpt4 book ai didi

haskell - 模式同义词能否在每个方向上具有不同的类型签名,就像数字文字那样?

转载 作者:行者123 更新时间:2023-12-04 03:22:17 25 4
gpt4 key购买 nike

考虑数字文字 1。根据是用在等号的左边还是右边,它有不同的类型。在 f True = 1 中,1 的类型为 Num p => p。但是在 f 1 = True 中,1 的类型是 (Eq a, Num a) => a。是否可以创建一个以相同方式工作的模式同义词?例如:

pattern LooksLikeFoo :: (Read a, Show a) => a
pattern LooksLikeFoo <- (show -> "Foo")
where LooksLikeFoo = read "Foo"

该模式只有在同时具有 ReadShow 类时才有效,无论它位于等号的哪一侧。有没有办法让它在等号左边有类型Show a => a,但是在右边有Read a => a?非工作伪代码:

pattern LooksLikeFoo :: Show a => a
pattern LooksLikeFoo <- (show -> "Foo")
where LooksLikeFoo :: Read a => a
LooksLikeFoo = read "Foo"

最佳答案

目前这是不可能的,但 Edward Kmett 已经多次提出这种可能性,例如:https://www.reddit.com/r/haskell/comments/eqhcgx/comment/fetsa54

关于haskell - 模式同义词能否在每个方向上具有不同的类型签名,就像数字文字那样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68280524/

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