[英]haskell sorting list of custom datatypes based on common atributes without usingf modules
我試圖訂購具有不同大小屬性的自定義數據類型列表,以驗證數據類型格式是否為真,但我不知道如何使用快速排序來操作它。
數據類型:
data Cuidado = Comprar String Int | Medicar String
我正在測試與快速排序的模式匹配,但它沒有任何意義。
valCui :: [Cuidado] -> [Cuidado]
valCui [] = []
valCui (x:xs) = valCui [a | a <- xs, x > a] ++ [x] ++ valCui [a | a <- xs, x <= a]
Output 應該是:
valCui [Medicar med7, Comprar med4 30] == [Comprar med4 30, Medicar med7]
這里只有兩個小問題:
您的列表理解中有一個->
運算符。 大概你的意思是在這里檢查大於關系,但它的運算符只是>
。 ->
箭頭是特殊語法,保留用於 function 簽名、lambda 和case
賦值。
為了能夠在您的自定義數據類型上使用此類比較運算符,您需要它具有Ord
類型類的實例。 但是你的沒有,或者至少你沒有表現出來。 獲取此類實例的最簡單方法是派生它:
data Cuidado = Comprar String Int | Medicar String deriving (Eq, Ord)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.