簡體   English   中英

標准SML數據類型列表

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

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