gpt4 book ai didi

haskell - 有什么方法可以消除此函数中类型的冗余吗?

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

假设我有两个这样的函数:

food :: Eatable a => String -> a
food animalType = getAnimal animalType

getAnimal :: Eatable a => String -> a
getAnimal "cat" = Cat
getAnimal "dog" = Dog

CatDog 都是 Eatable

所以我可以这样调用食物函数:

let cat = food "cat" :: Cat

但是把字符串放在那里似乎是多余的。有什么办法可以将其更改为:

let cat = food :: Cat

最佳答案

是的,只需删除多余的参数。 getAnimal 的返回类型决定了将使用的实例。

data Cat = Cat
data Dog = Dog

class Eatable animal where
getAnimal :: animal

instance Eatable Dog where
getAnimal = Dog

instance Eatable Cat where
getAnimal = Cat

关于haskell - 有什么方法可以消除此函数中类型的冗余吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16955096/

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