簡體   English   中英

haskell 基於公共屬性的自定義數據類型排序列表,無需使用模塊

[英]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]

這里只有兩個小問題:

  1. 您的列表理解中有一個->運算符。 大概你的意思是在這里檢查大於關系,但它的運算符只是> ->箭頭是特殊語法,保留用於 function 簽名、lambda 和case賦值。

  2. 為了能夠在您的自定義數據類型上使用此類比較運算符,您需要它具有Ord類型類的實例。 但是你的沒有,或者至少你沒有表現出來。 獲取此類實例的最簡單方法是派生它:

     data Cuidado = Comprar String Int | Medicar String deriving (Eq, Ord)

暫無
暫無

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

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