diff options
author | Charlie Stanton <charlie@shtanton.xyz> | 2023-04-21 15:17:52 +0100 |
---|---|---|
committer | Charlie Stanton <charlie@shtanton.xyz> | 2023-04-21 15:17:52 +0100 |
commit | 45b6fb61a00d7b8ce0a79479329e6817367d97ea (patch) | |
tree | edef8e54f327107d8196b33a23cd7b3b6676e335 /main/main.go | |
parent | 4b7f7b349e906e4760279273f1c03ad5fa802e25 (diff) | |
download | stred-go-45b6fb61a00d7b8ce0a79479329e6817367d97ea.tar |
All registers are now lists of atoms instead of lists of values
This is to reduce the amount of translating between them that needs to be done
Diffstat (limited to 'main/main.go')
-rw-r--r-- | main/main.go | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/main/main.go b/main/main.go index 923ffa6..564d14a 100644 --- a/main/main.go +++ b/main/main.go @@ -9,7 +9,7 @@ import ( type Program []Command type ProgramState struct { - path, value, xreg []walk.WalkValue + path, value, xreg []walk.Atom in chan walk.WalkItem out chan walk.WalkItem program []Command @@ -50,14 +50,22 @@ func main() { go func () { for walkItem := range dataStream { - state.value = []walk.WalkValue{walkItem.Value} - state.path = walkItem.Path.ToWalkValues() + state.value = walk.Atomise([]walk.WalkValue{walkItem.Value}) + state.path = walk.Atomise(walkItem.Path.ToWalkValues()) for _, cmd := range state.program { cmd.exec(&state) } if !quiet { - path := walk.PathFromWalkValues(state.path) - for _, value := range state.value { + pathValues, err := walk.Compound(state.path) + if err != nil { + panic("Tried to convert invalid atoms to values") + } + path := walk.PathFromWalkValues(pathValues) + values, err := walk.Compound(state.value) + if err != nil { + panic("Tried to convert invalid atoms to values") + } + for _, value := range values { state.out <- walk.WalkItem { Value: value, Path: path, |