unison/unison-src/transcripts/add-run.output.md

312 lines
4.9 KiB
Markdown
Raw Permalink Normal View History

2022-08-15 21:58:48 +03:00
# add.run
2022-08-17 23:50:15 +03:00
## Basic usage
``` unison
2022-08-15 21:58:48 +03:00
even : Nat -> Boolean
even x = if x == 0 then true else odd (drop x 1)
odd : Nat -> Boolean
odd x = if x == 0 then false else even (drop x 1)
is2even : 'Boolean
is2even = '(even 2)
```
``` ucm
2022-08-15 21:58:48 +03:00
Loading changes detected in scratch.u.
2022-08-15 21:58:48 +03:00
I found and typechecked these definitions in scratch.u. If you
do an `add` or `update`, here's how your codebase would
change:
⍟ These new definitions are ok to `add`:
even : Nat -> Boolean
is2even : 'Boolean
odd : Nat -> Boolean
```
2022-08-17 23:50:15 +03:00
it errors if there isn't a previous run
``` ucm
scratch/main> add.run foo
2022-08-15 21:58:48 +03:00
⚠️
There is no previous evaluation to save. Use `run` to evaluate
something before attempting to save it.
```
``` ucm
scratch/main> run is2even
2022-08-15 21:58:48 +03:00
true
```
2022-08-17 23:50:15 +03:00
it errors if the desired result name conflicts with a name in the
unison file
``` ucm
scratch/main> add.run is2even
2022-08-15 21:58:48 +03:00
⚠️
Cannot save the last run result into `is2even` because that
name conflicts with a name in the scratch file.
```
2022-08-17 23:50:15 +03:00
otherwise, the result is successfully persisted
``` ucm
scratch/main> add.run foo.bar.baz
2022-08-15 21:58:48 +03:00
2022-08-22 21:17:48 +03:00
⍟ I've added these definitions:
foo.bar.baz : Boolean
2022-08-15 21:58:48 +03:00
```
``` ucm
scratch/main> view foo.bar.baz
2022-08-15 21:58:48 +03:00
foo.bar.baz : Boolean
foo.bar.baz = true
```
2022-08-17 23:50:15 +03:00
## It resolves references within the unison file
``` unison
2022-08-17 23:50:15 +03:00
z b = b Nat.+ 12
y a b = a Nat.+ b Nat.+ z 10
main : '{IO, Exception} (Nat -> Nat -> Nat)
main _ = y
```
``` ucm
2022-08-17 23:50:15 +03:00
Loading changes detected in scratch.u.
2022-08-17 23:50:15 +03:00
I found and typechecked these definitions in scratch.u. If you
do an `add` or `update`, here's how your codebase would
change:
⍟ These new definitions are ok to `add`:
main : '{IO, Exception} (Nat -> Nat -> Nat)
y : Nat -> Nat -> Nat
z : Nat -> Nat
2022-08-17 23:50:15 +03:00
```
``` ucm
scratch/main> run main
2022-08-17 23:50:15 +03:00
a b -> a Nat.+ b Nat.+ z 10
scratch/main> add.run result
2022-08-17 23:50:15 +03:00
2022-08-22 21:17:48 +03:00
⍟ I've added these definitions:
result : Nat -> Nat -> Nat
z : Nat -> Nat
2022-08-17 23:50:15 +03:00
```
## It resolves references within the codebase
``` unison
2022-08-17 23:50:15 +03:00
inc : Nat -> Nat
inc x = x + 1
```
``` ucm
Loading changes detected in scratch.u.
I found and typechecked these definitions in scratch.u. If you
do an `add` or `update`, here's how your codebase would
change:
⍟ These new definitions are ok to `add`:
2022-08-17 23:50:15 +03:00
inc : Nat -> Nat
```
``` ucm
scratch/main> add inc
2022-08-17 23:50:15 +03:00
⍟ I've added these definitions:
inc : Nat -> Nat
```
``` unison
2022-08-17 23:50:15 +03:00
main : '(Nat -> Nat)
main _ x = inc x
```
``` ucm
Loading changes detected in scratch.u.
I found and typechecked these definitions in scratch.u. If you
do an `add` or `update`, here's how your codebase would
change:
⍟ These new definitions are ok to `add`:
2022-08-17 23:50:15 +03:00
main : '(Nat -> Nat)
```
``` ucm
scratch/main> run main
2022-08-17 23:50:15 +03:00
inc
scratch/main> add.run natfoo
2022-08-17 23:50:15 +03:00
2022-08-22 21:17:48 +03:00
⍟ I've added these definitions:
natfoo : Nat -> Nat
scratch/main> view natfoo
2022-08-17 23:50:15 +03:00
natfoo : Nat -> Nat
natfoo = inc
```
## It captures scratch file dependencies at run time
``` unison
2022-08-17 23:50:15 +03:00
x = 1
y = x + x
main = 'y
```
``` ucm
2022-08-17 23:50:15 +03:00
Loading changes detected in scratch.u.
2022-08-17 23:50:15 +03:00
I found and typechecked these definitions in scratch.u. If you
do an `add` or `update`, here's how your codebase would
change:
⍟ These new definitions are ok to `add`:
main : 'Nat
x : Nat
y : Nat
```
``` ucm
scratch/main> run main
2022-08-17 23:50:15 +03:00
2
```
``` unison
2022-08-17 23:50:15 +03:00
x = 50
```
``` ucm
2022-08-17 23:50:15 +03:00
Loading changes detected in scratch.u.
2022-08-17 23:50:15 +03:00
I found and typechecked these definitions in scratch.u. If you
do an `add` or `update`, here's how your codebase would
change:
⍟ These new definitions are ok to `add`:
x : Nat
```
2022-08-18 02:12:46 +03:00
this saves 2 to xres, rather than 100
``` ucm
scratch/main> add.run xres
2022-08-17 23:50:15 +03:00
2022-08-22 21:17:48 +03:00
⍟ I've added these definitions:
xres : Nat
scratch/main> view xres
2022-08-17 23:50:15 +03:00
xres : Nat
xres = 2
```
## It fails with a message if add cannot complete cleanly
``` unison
main = '5
```
``` ucm
Loading changes detected in scratch.u.
I found and typechecked these definitions in scratch.u. If you
do an `add` or `update`, here's how your codebase would
change:
⍟ These new definitions are ok to `add`:
main : 'Nat
```
``` ucm
scratch/main> run main
5
scratch/main> add.run xres
2022-08-22 17:50:13 +03:00
x These definitions failed:
Reason
needs update xres : Nat
Tip: Use `help filestatus` to learn more.
```
2022-08-22 18:26:40 +03:00
## It works with absolute names
``` unison
2022-08-22 18:26:40 +03:00
main = '5
```
``` ucm
2022-08-22 18:26:40 +03:00
Loading changes detected in scratch.u.
2022-08-22 18:26:40 +03:00
I found and typechecked these definitions in scratch.u. If you
do an `add` or `update`, here's how your codebase would
change:
⍟ These new definitions are ok to `add`:
main : 'Nat
```
``` ucm
2024-07-01 23:27:40 +03:00
scratch/main> run main
2022-08-22 18:26:40 +03:00
5
2024-07-01 23:27:40 +03:00
scratch/main> add.run .an.absolute.name
2022-08-22 18:26:40 +03:00
2022-08-22 21:17:48 +03:00
⍟ I've added these definitions:
.an.absolute.name : Nat
2024-07-01 23:27:40 +03:00
scratch/main> view .an.absolute.name
2022-08-22 18:26:40 +03:00
.an.absolute.name : Nat
.an.absolute.name = 5
2022-08-22 18:26:40 +03:00
```