我想要熟悉Haskell,我在想如果下面是可能的,如果是这样,怎么样?在haskell中替换复合函数中的函数
说我有一套功能{f,g,..}
为此我要定义一个替代函数{f',g',..}
。现在说我有一个函数c
,它使用这些函数(并且只有这些函数)在它自己内部,例如c x = g (f x)
。有没有一种方法可以自动定义c' x = g' (f' x)
而不明确定义它?
编辑:通过替换函数f'
我的意思是一些函数,在概念上与f
通过以某种任意方式被改变。例如,如果f xs ys = (*) <$> xs <*> ys
然后f' (x:xs) (y:ys) = (x * y):(f' xs ys)
等
非常感谢, 本
你是什么意思的“替代功能”?你能举一个更具体的例子吗?但是,我会猜测答案可能是“不是没有一些重构”。如果你能以某种方式让'f','g'和co在一个类型类型下生活,那么你可以重写所有'c'函数来使用该类型类型。或者,您可以通过创建一个数据类型进行显式传递,该数据类型包含您要使用的每个函数的字段。可能还有一个模板haskell解决方案,但我很少建议TH,除非没有其他方法。 – bheklilr
你能详细解释一下类型类方法吗?我认为我会有一个带有函数的类型类型,并以我想要的方式生成另一个函数,但是如何使用它来生成'c''? – BenJacob
也许从'自动分化'的想法可以帮助你。 – freestyle