Gryphon Data Structures: Difference between revisions
Adamcolton (talk | contribs) |
Adamcolton (talk | contribs) No edit summary |
||
| Line 45: | Line 45: | ||
== Std Lib == | == Std Lib == | ||
=== Slice/Vector === | === Array === | ||
This is a package off the standard library | |||
==== Fixed ==== | |||
This is the Go array. The size is baked into the type | |||
foo:= Array.Fixed<int,4>() | |||
==== Variable ==== | |||
Like a slice, but has no excess capacity. Unlike fixed, different lengths are the same type. | |||
foo := Array.Var<int>(10) | |||
==== Slice/Vector ==== | |||
The Go slice, has both a length and capacity. | |||
=== Channel === | === Channel === | ||
| Line 57: | Line 68: | ||
* Red/Black | * Red/Black | ||
* B | * B | ||
* | * KD | ||
I think it may be possible to create one general purpose tree. It has a B value where B=1 is a binary tree. It can also be KT by passing the depth into the compare function. | I think it may be possible to create one general purpose tree. It has a B value where B=1 is a binary tree. It can also be KT by passing the depth into the compare function. | ||
[[Category:Gryphon]] | [[Category:Gryphon]] | ||
Revision as of 01:28, 17 October 2019
Built in
Very little by default. Not even arrays. There is something like a byte array.
Struct
The default data structure. Definition is surrounded by angle brackets, or possibly angle brackets plus the type bracket. If the type bracket is [] it would be
person := <[ Name : string Age : int ]>
I'm not sure yet what the type bracket will be. I like using {} for list so that code blocks stay as curly braces. I end up liking (), but then it would be weird to us that for math. That leaves [], but I'm not sure how I feel about that.
adam := person[ Name = "Adam" Age = 35 ]
Unlike Go, there are no default values, but default values can be provided
person := <[ Name : string = "John Doe" Age : int ]>
When instantiating, any field without a default value must be defined.
Curry
Need this, not sure:
partial := person< Name = "Adam" > adam := partial[ Age = 35 ]
Lists
Lists are of the form
{a; b; c; d}
It frees up the comma and it's faster because ; is under the pinky. Newlines can also be used
{
a
b
c
d
}
A list is neither a slice nor an array. It's type is constant and it is immutable.
Std Lib
Array
This is a package off the standard library
Fixed
This is the Go array. The size is baked into the type
foo:= Array.Fixed<int,4>()
Variable
Like a slice, but has no excess capacity. Unlike fixed, different lengths are the same type.
foo := Array.Var<int>(10)
Slice/Vector
The Go slice, has both a length and capacity.
Channel
Depending on mutability, I think these will be different from the Go channel. I think you setup a receiver and then create senders. Each sender is a separate but mutable instance.
Hash Map
Yup.
Trees
- Red/Black
- B
- KD
I think it may be possible to create one general purpose tree. It has a B value where B=1 is a binary tree. It can also be KT by passing the depth into the compare function.