c07e6aa99b
[types] Make math ops macros even more generic -- implement them for cross types too!
...
Still need to write tests for this though.
2018-09-13 18:08:17 -07:00
e7273d6c98
[types] Document fields of Frac
2018-09-09 11:24:10 -07:00
1b26497d19
[types] Move arithmetic ops to a macro 🤯
...
Sketch out Irr type and implement arithmetic types on it.
2018-09-09 11:23:46 -07:00
ce50ab5101
[types] Add some tests for pairs
...
Working on defining a pattern for naming tests so it is easier to see what is testing what.
2018-09-09 08:58:14 -07:00
125fb08f43
[types] Add (back) trailing commas
2018-09-08 16:06:47 -07:00
30a876a3f9
[types] Add test for multiplying Fracs
2018-09-07 17:54:24 -07:00
d5e6913197
[types] Fix up tests for Frac type
2018-09-07 17:50:02 -07:00
5aca4cfbe4
[types] Implement Add for Frac
2018-09-07 08:48:46 -07:00
a5ed11ea77
[types] More operations on Ints and some tests for Frac
...
Implement Div on Int
Make sure Fracs are reduced when they are produced, plus some error handling if you create a x/0 Frac
2018-09-07 08:30:13 -07:00
1aabce4f60
[types] Add GCD and LCM to Int; implement Rem on Int
2018-09-07 08:14:33 -07:00
45bc366a41
[types] Add Frac type
2018-09-07 06:59:13 -07:00
0ed4aa3ae5
[types] Implement Add and Mul on Int
2018-09-01 20:00:09 -07:00
68eec8578c
[types] Passing integer tests and build fixes
2018-09-01 12:21:13 -07:00
3bdf14720c
[types] Expand the documentation of Numbers
2018-09-01 12:03:26 -07:00
9801113c01
[types] Move exactness flag to is_exact() method on Number
2018-09-01 11:58:25 -07:00
f18b6a5719
[types] Simplify explicit lifetimes for Int::eq(Obj)
2018-09-01 11:52:49 -07:00
576b81e52c
[types] OMG SO MUCH LIFETIME NONSENSE
2018-09-01 08:33:45 -07:00
1e12508348
[types] Number trait, Int type (which does not work), and some API improvements for Objects
2018-08-31 19:15:12 -07:00
3a7fe94b32
[types] Implement From<bool> for Bool
2018-08-26 17:41:50 -07:00
d0441965eb
[types] Add Bools to the mix
2018-08-26 09:52:17 -07:00
9a728c9489
[types] Add some tests for equality of pairs
2018-08-25 11:32:19 -07:00
22f3c3a9e3
[types] Value equivalence via PartialEq!
2018-08-25 11:18:59 -07:00
1a3b7adc5a
[types] Clean up Object a little, add default implementations
2018-08-25 09:21:51 -07:00
31081ba5a9
[types] Move tests to tests/ directory; implement a bunch of Display tests
2018-08-25 09:21:34 -07:00
d10c72711b
[types] Test for displaying empty Pair
2018-08-25 08:33:39 -07:00
fc1f3acfa2
[types] Clean up failing tests
2018-08-25 08:33:23 -07:00
3024efe65e
[types] Add some unit tests for Sym
2018-08-25 08:18:32 -07:00
cd7ea8f543
[types] Revert to a more Rusty way to print objects for Debug
2018-08-25 08:00:39 -07:00
c35fce7727
[parser, types] Call subparser_completed
2018-08-24 21:07:04 -07:00
8e9fde7a9f
[parser, types] Add Obj::take() and use it to take the Obj from the parser when it is done
2018-08-23 18:04:04 -07:00
929846152e
[parser, types] Clean up obj parsers
...
- Define ListParser, SymParser in their own separate modules
- Add some stuff to types to make working with them more ergonomic
2018-08-23 17:52:56 -07:00
d825d0ec8a
[types] Clean up Pair and Sym types
...
Reconfigure the top-level object types.
- Obj is an enum pointer type
- Object is a trait that all Scheme types should implement
Define Sym, a symbol type.
Define Pair, a pair/cons/list type.
Implement Display for all types above. Implement casting methods for the above.
2018-08-23 17:05:29 -07:00
f197f1ba8b
Rename predicates -> preds
2018-08-23 07:53:04 -07:00
234b60dde9
Some spacing tweaks to predicates
2018-08-20 16:31:10 -07:00
a81e9b4258
I guess we're doing this again...
2018-08-20 16:30:59 -07:00
5a5a0c9c07
Add ObjectPtr::new_pair()
2018-08-20 15:21:38 -07:00
6de9ff6695
[types] Fix the tests
2018-08-17 17:18:01 -07:00
4d3366db84
First attempt at Display for Object::Vector
2017-04-30 16:01:11 -07:00
f21148381e
Make sibiltypes::char public
2017-04-30 15:57:29 -07:00
3ffb694ce1
Move Exact to types::number
2017-04-30 15:55:50 -07:00
0133bbed19
[types] Move Char trait down to just above impl
2017-04-23 17:11:56 -07:00
1430bdad29
Make a Char trait that provides some handy methods for Object::Char
2017-04-23 10:57:08 -07:00
fd5df91e27
[lexer,types] Move named_char to types as types/char/names.rs
...
Move char.rs to be char/mod.rs
2017-04-23 10:41:47 -07:00
38be7d2eee
Expose ObjectPtr and ObjectPtr::new from sibiltypes
2017-04-23 09:23:03 -07:00
2f8051135f
Couple more tweaks to number printing
2017-04-22 15:05:51 -07:00
15910480ee
Write Numbers
2017-04-22 12:57:43 -07:00
3d13800d30
Clean module imports for real.rs
2017-04-22 12:57:25 -07:00
b5e9ce6ae2
Implement Display for Numbers
2017-04-22 12:57:11 -07:00
a827958656
Remove complex module from types/number
2017-04-22 12:56:54 -07:00
89b29aadbe
Some unit tests for displaying objects -- not every case is covered cause there are still lots of TODOs
2017-04-22 12:48:46 -07:00