gpt4 book ai didi

haskell - 区分字符串和 [Char]

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

我知道 String 被定义为 [Char],但我想在类实例中对它们两者进行区分。除了使用 newtype 创建单独的类型之外,这是否可能通过一些巧妙的技巧来实现?我想做类似的事情:

class Something a where     
doSomething :: a -> a

instance Something String where
doSomething = id

instance (Something a) => Something [a] where
doSomething = doSoemthingElse

当我用 doSomething ("a" :: [Char]) 调用它时会得到不同的结果和 doSomething ("a" :: String) .

我知道 FlexibleInstancesOverlappingInstances但他们显然没有解决这个问题。

最佳答案

这是不可能的。 String[Char]是同一类型。没有办法区分这两种类型。与 OverlappingInstances您可以为 String 创建单独的实例和 [a] , 但是 [Char]将始终使用 String 的实例.

关于haskell - 区分字符串和 [Char],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19258618/

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