簡體   English   中英

為 haskell 代碼編寫高階 Function

[英]Write a Higher Order Function for haskell code

以下是一些 haskell function 定義。

f1 (x:xs) (y:ys) = (x+y) : f1 xs ys
f1 _ _ = []
f2 (xs:xss) (ys:yss) = (xs++ys) : f2 xss yss
f2 _ _ = []
f3 (x:xs) (y:ys) = (x*y) : f3 xs ys
f3 _ _ = []
f4 (x:xs) (y:ys) = (x+42) : f4 xs ys
f4 _ _ = []
f5 (x:xs) (y:ys) = (y-x*x) : f5 xs ys
f5 _ _ = []

因此,我需要制作一個更高階的 function hof 來捕獲這種常見行為並重寫上面的 f1、f2、f3、f4 和 f5 中的每一個,以便使用適當的 arguments 調用 hof。 最后,和前面的部分無關,hof是Haskell Prelude(化名)提供的嗎?

hof f list1 list2 = zipWith f list1 list2

f1 list1 list2 = hof (+) list1 list2

f2 list1 list2 = hof (++) list1 list2

f3 list1 list2 = hof (*) list1 list2

f4 list1 list2 = hof func list1 list2
                where func x _ = x+42

f5 list1 list2 = hof func list1 list2
                where func x y = y - (x*x)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM