我编写了以下Haskell函数:
SELECT
m.ProductID, m.CategoryID, m.ProductName, m.Details, m.Price, m.Stock,
k.Status,
CASE WHEN k.Status <> 1 THEN 'No images' ELSE k.ImageName END AS ImageName,
FROM Products m
LEFT JOIN ProductImages k
ON k.ProductID = m.ProductID AND k.Status = 1
正如您所看到的,“insertionSort”取决于“myInsert”,它们工作正常。现在我被要求在“insertioSort”中使用“foldr”,但我无法取得成功。
我将非常感谢您的反馈。
答案 0 :(得分:3)
以下是definition of foldr
used in GHC:
foldr k z = go
where
go [] = z
go (y:ys) = y `k` go ys
为了简单起见,让我们内联go
,并使用一些不那么花哨的语法:
foldr k z [] = z
foldr k z (x:xs) = k x (foldr k z xs)
为了比较,这是你的功能:
insertionSort [] = []
insertionSort (x:xs) = myInsert x (insertionSort xs)
注意它们有多相似!您能否弄清k
方程式中z
和foldr
与insertionSort
的实现方式相同?