我想要熟悉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