2017-03-05 62 views
2

我有这样的声明ocaml的类型说明(初级)

type 'a dict = string -> 'a option 
val empty : unit -> 'a dict 
val insert : 'a dict -> string * 'a -> 'a dict 

下面这个声明,我怎么能写emptyempty()只是返回一个空的字典。

+0

这是一个很有趣的家庭作业问题,我很嫉妒你tbh :-D – Yawar

回答

2

我不想将自己想象出来的部分短路。这里有提示。

  1. 词典有类型string -> 'a option。即,如果该字符串不与字典中的值相关联,则该函数返回字典中要查找的内容或None。看起来像空字典是没有任何字符串与任何东西关联的,所以函数总是会返回相同的结果。编写一个始终返回相同内容的函数并不难。

  2. 您的代码正在返回值(类型为'a),但它应该返回'a option类型的值。否则,它是伟大的代码,你正在抓住它的重点(恕我直言)。