[英]Standard SML datatype list
Datatype events = enter of string * real | exit of string *real;
所以我有這個數據類型,我必須編寫一個函數,將事件列表作為輸入,並返回按事件的實際部分排序的列表。 我試圖編寫一些函數,但是沒有想到任何好的方法,主意?
這是我嘗試的代碼:
val rec ordina = fn
[] => []
|v1::v2::l => if (#2(v2)) > (#2(v1))
then ordina (v1::l)
else oridna (v2::1);
我得到的錯誤:
poly:錯誤:找不到固定的記錄類型。 在#2附近發現
poly:錯誤:找不到固定的記錄類型。 在#2附近發現
一些反饋,
數據類型聲明可能應該是
datatype event = Enter of string * real | Exit of string * real
一個值包含一個事件。
通過具有例如類型事件列表的值來實現復數。
值構造函數通常以大寫的起始字母編寫。
在SML / NJ中,您有一個名為ListMergeSort.sort
的通用排序函數。 where 'a = event in this case. 它采用類型為的函數,其中'a =事件在這種情況下。 然后,您可以編寫一個函數,
fun cmp_event (event_a, event_b) = ...
返回是否event_a
前應責令event_b
根據自己的實際零件。 提示:首先,創建一個輔助函數以提取實部。 (用一個更好的名字來反映真實部分的目的。)
fun get_real_part (Enter (_, r)) = ... | get_real_part ... = ...
如果不允許使用ListMergeSort.sort
,則進行自己的排序 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.