X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fmaster-project%2Freport.git;a=blobdiff_plain;f=Chapters%2FHardwareDescription.tex;h=24afd8965d42722bb87114f6453bd049dbac84f9;hp=ef2533e3bf80f008601ae9b5a69a47cd22209ccd;hb=b92b16b7e4ab854699bcd151bad0be7c5d73c0ae;hpb=1b9665a243799137f9b3f2b04e13489ba6f66e5e diff --git a/Chapters/HardwareDescription.tex b/Chapters/HardwareDescription.tex index ef2533e..24afd89 100644 --- a/Chapters/HardwareDescription.tex +++ b/Chapters/HardwareDescription.tex @@ -342,6 +342,7 @@ and3 a b c = and (and a b) c types) and just one field (which are technically not a product). \stopdesc \startdesc{Enumerated types} + \defref{enumerated types} An enumerated type is an algebraic datatype with multiple constructors, but none of them have fields. This is essentially a way to get an enum-like type containing alternatives. @@ -788,7 +789,7 @@ acc in s = (s', out) variables are used by a function can be completely determined from its type signature (as opposed to the stream approach, where a function looks the same from the outside, regardless of what state variables it - uses (or whether it's stateful at all). + uses or whether it's stateful at all). This approach is the one chosen for Cλash and will be examined more closely below. @@ -803,7 +804,9 @@ acc in s = (s', out) has to somehow know the current state for these called functions. The only way to do this, is to put these \emph{substates} inside the caller's state. This means that a function's state is the sum of the - states of all functions it calls, and its own state. + states of all functions it calls, and its own state. This sum + can be obtained using something simple like a tuple, or possibly + custom algebraic types for clarity. This also means that the type of a function (at least the "state" part) is dependent on its own implementation and of the functions it @@ -882,7 +885,7 @@ acc in s = (s', out) \todo{Sidenote: One or more state arguments?} - \subsection{Explicit state annotation} + \subsection[sec:description:stateann]{Explicit state annotation} To make our stateful descriptions unambigious and easier to translate, we need some way for the developer to describe which arguments and results are intended to become stateful. @@ -1019,3 +1022,5 @@ acc in s = (s', out) Due to these complications and limited time available, we leave other forms of recursion as future work as well. + +% vim: set sw=2 sts=2 expandtab: