base_v1 icon indicating copy to clipboard operation
base_v1 copied to clipboard

Add `Stack` datatype

Open jdan opened this issue 4 years ago • 1 comments

This changeset proposes a new Stack datatype for first-in-last-out data. It was mostly inspired by OCaml's Stack implementation.

Code review

The changes summarized below are available for you to review, using the following command:

pull-request.load https://github.com/unisonweb/base:.trunk https://github.com/jdan/unisoncode:.prs.base.stack

Added definitions:

 type Stack a (+1 metadata)
 Stack.Stack                          : [a] -> Stack a
 Stack.doc                            : Doc (+1 metadata)
 Stack.empty                          : Stack a (+1 metadata)
 Stack.empty.doc                      : Doc
 Stack.fromList                       : [a] -> Stack a (+1 metadata)
 Stack.fromList.doc                   : Doc (+1 metadata)
 Stack.isEmpty                        : Stack a
                                      -> Boolean (+1 metadata)
 Stack.isEmpty.doc                    : Doc (+1 metadata)
 Stack.metadata.authors.jdan          : Author
 Stack.metadata.authors.jdan.guid     : GUID
 Stack.metadata.copyrightHolders.jdan : CopyrightHolder
 Stack.pop                            : Stack a
                                      -> Optional (Stack a) (+1 metadata)
 Stack.pop.doc                        : Doc (+1 metadata)
 Stack.push                           : v
                                      -> Stack v
                                      -> Stack v (+1 metadata)
 Stack.push.doc                       : Doc (+1 metadata)
 Stack.singleton                      : a -> Stack a (+1 metadata)
 Stack.singleton.doc                  : Doc
 Stack.size                           : Stack a -> Nat (+1 metadata)
 Stack.size.doc                       : Doc (+1 metadata)
 Stack.top                            : Stack v
                                      -> Optional v (+1 metadata)
 Stack.top.doc                        : Doc (+1 metadata)

jdan avatar Feb 11 '21 19:02 jdan

No hard feelings if this is too trivial, as it's really just... List.+: and List.head :) Just wanted to try out the pull request flow and docs features (thanks @runarorama for your wonderful Bag docs)

jdan avatar Feb 11 '21 19:02 jdan