# vc (Varyx Calculator)

https://www.vcode.org/vc/

`vc`

is a command-line calculator. Its purpose is to prototype the development of Varyx’s parser and expression engine. Think of it as an embryo or larval stage to the Varyx programming language.

The `vc`

source code is AGPL-licensed and published on GitHub.

## Progress

- Big integers up to 2^2^20 (can be trivially increased to 2^2^36)
- strings (including
`\u1234`

and`\u{12345}`

escape sequences) - heterogenous arrays
- user-defined code blocks
`map`

operator`true`

and`false`

- optional type annotations
- integer type refinements:
`i8`

,`u8`

,`i16`

,`u16`

,`i32`

,`u32`

,`i64`

,`u64`

`byte`

type (distinct from`u8`

integers)- comma-separated lists (with empty list as
`()`

) - constants and variables (declared by
`const`

and`var`

) - unary
`+`

,`-`

- binary arithmetic
`+`

,`-`

,`*`

,`/`

,`div`

,`%`

,`mod`

, and`^`

(exponentiation) - equalities (
`==`

and`!=`

) - inequalities (
`<`

,`<=`

,`>`

, and`>=`

) - left unary
`(+)`

for list count - infix binary
`(*)`

for list multiplication - partial application of function arguments with
`%`

- pure functions
`area()`

,`abs()`

,`half()`

,`join()`

,`typeof()`

,`hex()`

,`unbin()`

, and`unhex()`

- type-safe assignment with
`=`

,`+=`

,`-=`

,`*=`

,`/=`

,`%=`

- lossy assignment with
`:=`

- multiple statements, separated by
`;`

`if`

/`then`

/`else`

## Future Directions

- octal integer literals
- rational numbers
- rational division with
`/`

- wide fixed-width integers
- REPL (read-eval-print loop)