Difference between revisions of "Chained Dictionary Assignment"

From CSE425S Wiki
Jump to navigation Jump to search
Line 14: Line 14:
 
[https://www.cs.cornell.edu/courses/cs312/2008sp/recitations/rec15.html Refs and Arrays]
 
[https://www.cs.cornell.edu/courses/cs312/2008sp/recitations/rec15.html Refs and Arrays]
  
 +
=Spec=
 +
==get==
 +
Behaves much like [https://docs.oracle.com/javase/8/docs/api/java/util/Map.html#get-java.lang.Object- java.util.Map<K,V>'s get method] except instead of returning null or the associated value, it returns an option.
 +
==put==
 +
==remove==
 
=SingleList Implementation=
 
=SingleList Implementation=
 
  <nowiki>signature SINGLE_LIST_DICTIONARY = sig include DICTIONARY
 
  <nowiki>signature SINGLE_LIST_DICTIONARY = sig include DICTIONARY

Revision as of 19:08, 2 March 2020

In this and the follow up Sorted Dictionary studio, you will build three implementations of a dictionary. Each will be a persistent, mutable data structure, so you can expect to use the ref feature of SML, either directly or via the mutable Array structure.

signature DICTIONARY = sig
    type (''k,'v) dictionary
    val get : ((''k,'v) dictionary *''k) -> 'v option
    val put : ((''k,'v) dictionary *''k *'v) -> 'v option
    val remove : ((''k,'v) dictionary *''k) -> 'v option
    val entries : (''k,'v) dictionary -> (''k*'v) list
    val keys : (''k,'v) dictionary -> ''k list
    val values : (''k,'v) dictionary -> 'v list
end

Background

Refs and Arrays

Spec

get

Behaves much like java.util.Map<K,V>'s get method except instead of returning null or the associated value, it returns an option.

put

remove

SingleList Implementation

signature SINGLE_LIST_DICTIONARY = sig include DICTIONARY
    val create_simple : unit -> (''k,'v) dictionary
end

Hashtable Implementation

Hash table

Hash table 5 0 1 1 1 1 1 LL.svg

SML Array Structure

signature HASHED_DICTIONARY = sig include DICTIONARY
    type ''k hash_function = ''k -> int
    val create_hashed : (int * ''k hash_function) -> (''k,'v) dictionary
end