vault backup: 2023-10-11 11:23:46
This commit is contained in:
@ -1,2 +0,0 @@
|
||||
List is the most fundamental data type. Is a sequencial argument, is a final sequence of element. It is no possible to have more than one element per box.
|
||||
There is two different way to declare a list, the recursive one and the iterative one.
|
38
Algo/CM/Lists.md
Normal file
38
Algo/CM/Lists.md
Normal file
@ -0,0 +1,38 @@
|
||||
List is the most fundamental data type. Is a sequencial argument, is a final sequence of element. It is no possible to have more than one element per box.
|
||||
There is two different way to declare a list, the recursive one and the iterative one.
|
||||
|
||||
## Recursive list
|
||||
- The first box is the **head of the list**
|
||||
- The rest of the list is **the tail of the list**
|
||||
- The signature of the recursive list is the following:
|
||||
```
|
||||
TYPES
|
||||
list, box
|
||||
|
||||
USES
|
||||
element
|
||||
|
||||
OPERATIONS
|
||||
emptylist : -> list (* Internal operations of list*)
|
||||
cons : list x element -> list (* Internal operations of list *)
|
||||
tail : list -> list (* Internal operations of list *)
|
||||
head : list -> box (* Internal operations of box *)
|
||||
contents : box -> element (* Observer of box *)
|
||||
first : list -> element (* Observer of list *)
|
||||
next : box -> box (* Internal operation of box *)
|
||||
|
||||
PRECONDITIONS
|
||||
tail(_l_) is-defined-iaoi _l_ ≠ emptylist
|
||||
head(_l_) is-defined-iaoi _l_ ≠ emptylist
|
||||
first(_l_) is-defined-iaoi _l_ ≠ emptylist
|
||||
|
||||
AXIOMS
|
||||
first(_l_) = contents(head(_l_))
|
||||
tail(cons(_e,l_)) = _l_
|
||||
first(cons(_e,l_)) = _e_
|
||||
next(head(_l_)) = head(tail(_l_))
|
||||
|
||||
WITH
|
||||
list _l_
|
||||
element _e_
|
||||
```
|
Reference in New Issue
Block a user