From 3e6b4957d1b50948b419a9290cb04b022777b0b3 Mon Sep 17 00:00:00 2001 From: Owen Jacobson Date: Wed, 15 Nov 2017 00:48:19 -0500 Subject: Renamed `defmacro` to `define-macro`, we're not heathens. Started a language manual outline. Removed stray primer. --- .../examples/17015ad1b47afd98/09a8a14f5f6826f2 | Bin 10 -> 0 bytes .../examples/17015ad1b47afd98/19bb68f9d92692f9 | Bin 67 -> 0 bytes .../examples/17015ad1b47afd98/2f292b4e710e8682 | Bin 5 -> 0 bytes .../examples/17015ad1b47afd98/310dfd8bbc90cba3 | Bin 0 -> 87 bytes .../examples/17015ad1b47afd98/3b91d6fc6c04488b | Bin 0 -> 11 bytes .../examples/17015ad1b47afd98/49e6f38c5cc772ec | Bin 0 -> 28 bytes .../examples/17015ad1b47afd98/5135a9631c5b557d | 1 + .../examples/17015ad1b47afd98/56980d5ed7b87686 | Bin 9 -> 0 bytes .../examples/17015ad1b47afd98/5e8285414e40b47e | 1 + .../examples/17015ad1b47afd98/61b71c2df2d87966 | Bin 8 -> 0 bytes .../examples/17015ad1b47afd98/69b43aa9ca8c9717 | Bin 27 -> 0 bytes .../examples/17015ad1b47afd98/745fc588673e7088 | Bin 13 -> 0 bytes .../examples/17015ad1b47afd98/79086a9d57f9948d | Bin 6 -> 0 bytes .../examples/17015ad1b47afd98/8221fd2283c91e1f | Bin 243 -> 0 bytes .../examples/17015ad1b47afd98/8611cbd7e46390b8 | Bin 10 -> 0 bytes .../examples/17015ad1b47afd98/8b092171a745ad44 | 1 - .../examples/17015ad1b47afd98/8ee2d9884de49d9a | Bin 5 -> 0 bytes .../examples/17015ad1b47afd98/9d45399b0c0edc9f | 1 + .../examples/17015ad1b47afd98/b0d0244d1f73df81 | Bin 105 -> 0 bytes .../examples/17015ad1b47afd98/bc4a06b69e0b9538 | Bin 0 -> 14 bytes .../examples/17015ad1b47afd98/df031fe309e7c5bf | 1 - .../examples/17015ad1b47afd98/edef7fb7ab16f7c5 | 1 + .../examples/641567e7f1117698/003d747d49469ded | Bin 0 -> 17 bytes .../examples/641567e7f1117698/005f5867178a5b25 | 1 - .../examples/641567e7f1117698/0478b7c7ead9c10d | Bin 1238 -> 0 bytes .../examples/641567e7f1117698/0fa317797ca6e4fc | Bin 0 -> 21 bytes .../examples/641567e7f1117698/167c6af33b70f99f | Bin 0 -> 10 bytes .../examples/641567e7f1117698/1cd68f1893d28b93 | 1 - .../examples/641567e7f1117698/1d14332589e1f360 | Bin 28 -> 0 bytes .../examples/641567e7f1117698/203107b3bbad5816 | Bin 6 -> 0 bytes .../examples/641567e7f1117698/2bd9f6ed10af66c0 | Bin 32 -> 0 bytes .../examples/641567e7f1117698/2f69395da78f14d8 | Bin 13 -> 0 bytes .../examples/641567e7f1117698/3c6c5c8e00e8affe | Bin 6 -> 0 bytes .../examples/641567e7f1117698/420facf54201ae10 | Bin 0 -> 22 bytes .../examples/641567e7f1117698/45f01200098f83fe | Bin 33 -> 0 bytes .../examples/641567e7f1117698/47977696f309c829 | Bin 6 -> 0 bytes .../examples/641567e7f1117698/4aebbeaae7b3a137 | Bin 0 -> 6 bytes .../examples/641567e7f1117698/5b5722a4fd36dcf6 | Bin 0 -> 36 bytes .../examples/641567e7f1117698/5be455f23fea5189 | Bin 7 -> 0 bytes .../examples/641567e7f1117698/63399f455589d4ba | Bin 15 -> 0 bytes .../examples/641567e7f1117698/6d688fd550d32db0 | Bin 25 -> 0 bytes .../examples/641567e7f1117698/7407b5bc15afb4de | Bin 0 -> 22 bytes .../examples/641567e7f1117698/7f8faf9da637e86f | Bin 34 -> 0 bytes .../examples/641567e7f1117698/86841ab5ff344485 | Bin 0 -> 31 bytes .../examples/641567e7f1117698/881b6ce80b5bd1fc | Bin 42 -> 0 bytes .../examples/641567e7f1117698/9cabd2809ed0730b | Bin 0 -> 21 bytes .../examples/641567e7f1117698/a6039ffc453749e1 | Bin 29 -> 0 bytes .../examples/641567e7f1117698/b19b7b820dddb3c6 | Bin 15 -> 0 bytes .../examples/641567e7f1117698/b3519a45e48ca658 | Bin 0 -> 54 bytes .../examples/641567e7f1117698/b52e65a9e0e8f9db | Bin 6 -> 0 bytes .../examples/641567e7f1117698/b8ea6d3dfe56288b | Bin 0 -> 182 bytes .../examples/641567e7f1117698/c17293c1c7f91651 | Bin 8 -> 0 bytes .../examples/641567e7f1117698/c5a0a2529d2deb60 | Bin 5 -> 0 bytes .../examples/641567e7f1117698/ca1fafbdd4c60ea7 | Bin 0 -> 13 bytes .../examples/641567e7f1117698/cc0f1d8c6aff0e8b | Bin 0 -> 40 bytes .../examples/641567e7f1117698/cfb16a37ef90423b | Bin 7 -> 0 bytes .../examples/641567e7f1117698/e0f086f15d94142d | Bin 0 -> 8 bytes .../examples/641567e7f1117698/ea786d015fba3bee | Bin 9 -> 0 bytes .../examples/641567e7f1117698/f41cb651e160d454 | Bin 8 -> 0 bytes .../examples/641567e7f1117698/f7b6a134061a22a3 | Bin 13 -> 0 bytes .../examples/c5004b86438ec8a9/a1a8c54704cd3ce5 | Bin 24 -> 0 bytes .../examples/c72254ca7f2d3ae9/18c072a6c0de03a3 | Bin 7 -> 0 bytes .../examples/c72254ca7f2d3ae9/76c7ab7f4af319c7 | Bin 12 -> 0 bytes .../examples/dc26b29be33957c5/34ca52b9868177da | Bin 3 -> 0 bytes .../examples/dc26b29be33957c5/34d913d63909f8ea | Bin 6 -> 0 bytes .../examples/dc26b29be33957c5/3f1b35cc98d1fb17 | Bin 0 -> 4 bytes .../examples/dc26b29be33957c5/47917d3045f708ac | Bin 7 -> 0 bytes .../examples/dc26b29be33957c5/4b5882e6feb52553 | Bin 10 -> 0 bytes .../examples/dc26b29be33957c5/4f5107fafb6b54a4 | Bin 0 -> 4 bytes .../examples/dc26b29be33957c5/7740d35b09376fb6 | Bin 4 -> 0 bytes .../examples/dc26b29be33957c5/8c833dd8753e1daa | Bin 4 -> 0 bytes .../examples/dc26b29be33957c5/ac70533cd7a9e886 | Bin 30 -> 0 bytes .../examples/dc26b29be33957c5/ca0e04d21db8220c | Bin 0 -> 95 bytes .../examples/dc26b29be33957c5/da26276c71f1ad71 | Bin 15 -> 0 bytes .../examples/dc26b29be33957c5/ee3ad785c37b610d | Bin 7 -> 0 bytes .../examples/dc26b29be33957c5/f616bd537b88b020 | Bin 0 -> 11 bytes .../examples/ec453dcb33aa8b66/00d848fe2a684240 | Bin 0 -> 6 bytes .../examples/ec453dcb33aa8b66/0280f750919c77c9 | Bin 0 -> 14 bytes .../examples/ec453dcb33aa8b66/0c69f7daba8b9b86 | Bin 10 -> 0 bytes .../examples/ec453dcb33aa8b66/0e4509f58fe57ea9 | Bin 0 -> 7 bytes .../examples/ec453dcb33aa8b66/0f0ccaa6855b4743 | Bin 0 -> 10 bytes .../examples/ec453dcb33aa8b66/0f42e404bef2b1a3 | Bin 11 -> 0 bytes .../examples/ec453dcb33aa8b66/1b1de29bcaea4e9e | Bin 0 -> 18 bytes .../examples/ec453dcb33aa8b66/204fd63d54e5ffd1 | Bin 0 -> 8 bytes .../examples/ec453dcb33aa8b66/207b79c0dd1b6fba | Bin 5 -> 0 bytes .../examples/ec453dcb33aa8b66/218d87f650043d4d | Bin 21 -> 0 bytes .../examples/ec453dcb33aa8b66/2498de236a3b0dbf | Bin 0 -> 8 bytes .../examples/ec453dcb33aa8b66/28a055f3278de950 | Bin 21 -> 0 bytes .../examples/ec453dcb33aa8b66/29a465ca925a55c2 | Bin 115 -> 0 bytes .../examples/ec453dcb33aa8b66/373d5339acd1960f | Bin 0 -> 22 bytes .../examples/ec453dcb33aa8b66/3b15208ee23b0387 | Bin 5 -> 0 bytes .../examples/ec453dcb33aa8b66/3be6ee08630f7415 | Bin 9 -> 0 bytes .../examples/ec453dcb33aa8b66/41d22663c8456cf1 | Bin 6 -> 0 bytes .../examples/ec453dcb33aa8b66/51ab005a386f8742 | Bin 5 -> 0 bytes .../examples/ec453dcb33aa8b66/51c86c3fc96bfb21 | Bin 0 -> 88 bytes .../examples/ec453dcb33aa8b66/52f15fc15e039804 | Bin 16 -> 0 bytes .../examples/ec453dcb33aa8b66/5e1b75e52e4472a7 | Bin 14 -> 0 bytes .../examples/ec453dcb33aa8b66/67d0320a64a5b588 | Bin 0 -> 8 bytes .../examples/ec453dcb33aa8b66/82995b8855a9ed39 | Bin 0 -> 6 bytes .../examples/ec453dcb33aa8b66/a4e2f3a0aa88806f | Bin 0 -> 75 bytes .../examples/ec453dcb33aa8b66/aee00180e7174861 | Bin 0 -> 9 bytes .../examples/ec453dcb33aa8b66/b691cacbafa2b728 | Bin 70 -> 0 bytes .../examples/ec453dcb33aa8b66/b6d137b15bd5d73b | Bin 0 -> 5 bytes .../examples/ec453dcb33aa8b66/b97615e01bdf629a | Bin 0 -> 7 bytes .../examples/ec453dcb33aa8b66/d21336a11fb4d335 | Bin 0 -> 10 bytes .../examples/ec453dcb33aa8b66/f41ac3052b176061 | Bin 6 -> 0 bytes .../examples/ef6354fc2348e0ad/592953b9926ddec7 | 1 + .../examples/ef6354fc2348e0ad/e7faf0b097a6f469 | Bin 6 -> 0 bytes LANGUAGE.rst | 375 +++++++++++++++++++++ README.rst | 6 - actinide/__init__.py | 11 +- actinide/evaluator.py | 2 +- actinide/expander.py | 4 +- primer.py | 10 - tests/test_expander.py | 36 ++ 115 files changed, 425 insertions(+), 28 deletions(-) delete mode 100644 .hypothesis/examples/17015ad1b47afd98/09a8a14f5f6826f2 delete mode 100644 .hypothesis/examples/17015ad1b47afd98/19bb68f9d92692f9 delete mode 100644 .hypothesis/examples/17015ad1b47afd98/2f292b4e710e8682 create mode 100644 .hypothesis/examples/17015ad1b47afd98/310dfd8bbc90cba3 create mode 100644 .hypothesis/examples/17015ad1b47afd98/3b91d6fc6c04488b create mode 100644 .hypothesis/examples/17015ad1b47afd98/49e6f38c5cc772ec create mode 100644 .hypothesis/examples/17015ad1b47afd98/5135a9631c5b557d delete mode 100644 .hypothesis/examples/17015ad1b47afd98/56980d5ed7b87686 create mode 100644 .hypothesis/examples/17015ad1b47afd98/5e8285414e40b47e delete mode 100644 .hypothesis/examples/17015ad1b47afd98/61b71c2df2d87966 delete mode 100644 .hypothesis/examples/17015ad1b47afd98/69b43aa9ca8c9717 delete mode 100644 .hypothesis/examples/17015ad1b47afd98/745fc588673e7088 delete mode 100644 .hypothesis/examples/17015ad1b47afd98/79086a9d57f9948d delete mode 100644 .hypothesis/examples/17015ad1b47afd98/8221fd2283c91e1f delete mode 100644 .hypothesis/examples/17015ad1b47afd98/8611cbd7e46390b8 delete mode 100644 .hypothesis/examples/17015ad1b47afd98/8b092171a745ad44 delete mode 100644 .hypothesis/examples/17015ad1b47afd98/8ee2d9884de49d9a create mode 100644 .hypothesis/examples/17015ad1b47afd98/9d45399b0c0edc9f delete mode 100644 .hypothesis/examples/17015ad1b47afd98/b0d0244d1f73df81 create mode 100644 .hypothesis/examples/17015ad1b47afd98/bc4a06b69e0b9538 delete mode 100644 .hypothesis/examples/17015ad1b47afd98/df031fe309e7c5bf create mode 100644 .hypothesis/examples/17015ad1b47afd98/edef7fb7ab16f7c5 create mode 100644 .hypothesis/examples/641567e7f1117698/003d747d49469ded delete mode 100644 .hypothesis/examples/641567e7f1117698/005f5867178a5b25 delete mode 100644 .hypothesis/examples/641567e7f1117698/0478b7c7ead9c10d create mode 100644 .hypothesis/examples/641567e7f1117698/0fa317797ca6e4fc create mode 100644 .hypothesis/examples/641567e7f1117698/167c6af33b70f99f delete mode 100644 .hypothesis/examples/641567e7f1117698/1cd68f1893d28b93 delete mode 100644 .hypothesis/examples/641567e7f1117698/1d14332589e1f360 delete mode 100644 .hypothesis/examples/641567e7f1117698/203107b3bbad5816 delete mode 100644 .hypothesis/examples/641567e7f1117698/2bd9f6ed10af66c0 delete mode 100644 .hypothesis/examples/641567e7f1117698/2f69395da78f14d8 delete mode 100644 .hypothesis/examples/641567e7f1117698/3c6c5c8e00e8affe create mode 100644 .hypothesis/examples/641567e7f1117698/420facf54201ae10 delete mode 100644 .hypothesis/examples/641567e7f1117698/45f01200098f83fe delete mode 100644 .hypothesis/examples/641567e7f1117698/47977696f309c829 create mode 100644 .hypothesis/examples/641567e7f1117698/4aebbeaae7b3a137 create mode 100644 .hypothesis/examples/641567e7f1117698/5b5722a4fd36dcf6 delete mode 100644 .hypothesis/examples/641567e7f1117698/5be455f23fea5189 delete mode 100644 .hypothesis/examples/641567e7f1117698/63399f455589d4ba delete mode 100644 .hypothesis/examples/641567e7f1117698/6d688fd550d32db0 create mode 100644 .hypothesis/examples/641567e7f1117698/7407b5bc15afb4de delete mode 100644 .hypothesis/examples/641567e7f1117698/7f8faf9da637e86f create mode 100644 .hypothesis/examples/641567e7f1117698/86841ab5ff344485 delete mode 100644 .hypothesis/examples/641567e7f1117698/881b6ce80b5bd1fc create mode 100644 .hypothesis/examples/641567e7f1117698/9cabd2809ed0730b delete mode 100644 .hypothesis/examples/641567e7f1117698/a6039ffc453749e1 delete mode 100644 .hypothesis/examples/641567e7f1117698/b19b7b820dddb3c6 create mode 100644 .hypothesis/examples/641567e7f1117698/b3519a45e48ca658 delete mode 100644 .hypothesis/examples/641567e7f1117698/b52e65a9e0e8f9db create mode 100644 .hypothesis/examples/641567e7f1117698/b8ea6d3dfe56288b delete mode 100644 .hypothesis/examples/641567e7f1117698/c17293c1c7f91651 delete mode 100644 .hypothesis/examples/641567e7f1117698/c5a0a2529d2deb60 create mode 100644 .hypothesis/examples/641567e7f1117698/ca1fafbdd4c60ea7 create mode 100644 .hypothesis/examples/641567e7f1117698/cc0f1d8c6aff0e8b delete mode 100644 .hypothesis/examples/641567e7f1117698/cfb16a37ef90423b create mode 100644 .hypothesis/examples/641567e7f1117698/e0f086f15d94142d delete mode 100644 .hypothesis/examples/641567e7f1117698/ea786d015fba3bee delete mode 100644 .hypothesis/examples/641567e7f1117698/f41cb651e160d454 delete mode 100644 .hypothesis/examples/641567e7f1117698/f7b6a134061a22a3 delete mode 100644 .hypothesis/examples/c5004b86438ec8a9/a1a8c54704cd3ce5 delete mode 100644 .hypothesis/examples/c72254ca7f2d3ae9/18c072a6c0de03a3 delete mode 100644 .hypothesis/examples/c72254ca7f2d3ae9/76c7ab7f4af319c7 delete mode 100644 .hypothesis/examples/dc26b29be33957c5/34ca52b9868177da delete mode 100644 .hypothesis/examples/dc26b29be33957c5/34d913d63909f8ea create mode 100644 .hypothesis/examples/dc26b29be33957c5/3f1b35cc98d1fb17 delete mode 100644 .hypothesis/examples/dc26b29be33957c5/47917d3045f708ac delete mode 100644 .hypothesis/examples/dc26b29be33957c5/4b5882e6feb52553 create mode 100644 .hypothesis/examples/dc26b29be33957c5/4f5107fafb6b54a4 delete mode 100644 .hypothesis/examples/dc26b29be33957c5/7740d35b09376fb6 delete mode 100644 .hypothesis/examples/dc26b29be33957c5/8c833dd8753e1daa delete mode 100644 .hypothesis/examples/dc26b29be33957c5/ac70533cd7a9e886 create mode 100644 .hypothesis/examples/dc26b29be33957c5/ca0e04d21db8220c delete mode 100644 .hypothesis/examples/dc26b29be33957c5/da26276c71f1ad71 delete mode 100644 .hypothesis/examples/dc26b29be33957c5/ee3ad785c37b610d create mode 100644 .hypothesis/examples/dc26b29be33957c5/f616bd537b88b020 create mode 100644 .hypothesis/examples/ec453dcb33aa8b66/00d848fe2a684240 create mode 100644 .hypothesis/examples/ec453dcb33aa8b66/0280f750919c77c9 delete mode 100644 .hypothesis/examples/ec453dcb33aa8b66/0c69f7daba8b9b86 create mode 100644 .hypothesis/examples/ec453dcb33aa8b66/0e4509f58fe57ea9 create mode 100644 .hypothesis/examples/ec453dcb33aa8b66/0f0ccaa6855b4743 delete mode 100644 .hypothesis/examples/ec453dcb33aa8b66/0f42e404bef2b1a3 create mode 100644 .hypothesis/examples/ec453dcb33aa8b66/1b1de29bcaea4e9e create mode 100644 .hypothesis/examples/ec453dcb33aa8b66/204fd63d54e5ffd1 delete mode 100644 .hypothesis/examples/ec453dcb33aa8b66/207b79c0dd1b6fba delete mode 100644 .hypothesis/examples/ec453dcb33aa8b66/218d87f650043d4d create mode 100644 .hypothesis/examples/ec453dcb33aa8b66/2498de236a3b0dbf delete mode 100644 .hypothesis/examples/ec453dcb33aa8b66/28a055f3278de950 delete mode 100644 .hypothesis/examples/ec453dcb33aa8b66/29a465ca925a55c2 create mode 100644 .hypothesis/examples/ec453dcb33aa8b66/373d5339acd1960f delete mode 100644 .hypothesis/examples/ec453dcb33aa8b66/3b15208ee23b0387 delete mode 100644 .hypothesis/examples/ec453dcb33aa8b66/3be6ee08630f7415 delete mode 100644 .hypothesis/examples/ec453dcb33aa8b66/41d22663c8456cf1 delete mode 100644 .hypothesis/examples/ec453dcb33aa8b66/51ab005a386f8742 create mode 100644 .hypothesis/examples/ec453dcb33aa8b66/51c86c3fc96bfb21 delete mode 100644 .hypothesis/examples/ec453dcb33aa8b66/52f15fc15e039804 delete mode 100644 .hypothesis/examples/ec453dcb33aa8b66/5e1b75e52e4472a7 create mode 100644 .hypothesis/examples/ec453dcb33aa8b66/67d0320a64a5b588 create mode 100644 .hypothesis/examples/ec453dcb33aa8b66/82995b8855a9ed39 create mode 100644 .hypothesis/examples/ec453dcb33aa8b66/a4e2f3a0aa88806f create mode 100644 .hypothesis/examples/ec453dcb33aa8b66/aee00180e7174861 delete mode 100644 .hypothesis/examples/ec453dcb33aa8b66/b691cacbafa2b728 create mode 100644 .hypothesis/examples/ec453dcb33aa8b66/b6d137b15bd5d73b create mode 100644 .hypothesis/examples/ec453dcb33aa8b66/b97615e01bdf629a create mode 100644 .hypothesis/examples/ec453dcb33aa8b66/d21336a11fb4d335 delete mode 100644 .hypothesis/examples/ec453dcb33aa8b66/f41ac3052b176061 create mode 100644 .hypothesis/examples/ef6354fc2348e0ad/592953b9926ddec7 delete mode 100644 .hypothesis/examples/ef6354fc2348e0ad/e7faf0b097a6f469 create mode 100644 LANGUAGE.rst delete mode 100644 primer.py create mode 100644 tests/test_expander.py diff --git a/.hypothesis/examples/17015ad1b47afd98/09a8a14f5f6826f2 b/.hypothesis/examples/17015ad1b47afd98/09a8a14f5f6826f2 deleted file mode 100644 index 85074f4..0000000 Binary files a/.hypothesis/examples/17015ad1b47afd98/09a8a14f5f6826f2 and /dev/null differ diff --git a/.hypothesis/examples/17015ad1b47afd98/19bb68f9d92692f9 b/.hypothesis/examples/17015ad1b47afd98/19bb68f9d92692f9 deleted file mode 100644 index 05d7933..0000000 Binary files a/.hypothesis/examples/17015ad1b47afd98/19bb68f9d92692f9 and /dev/null differ diff --git a/.hypothesis/examples/17015ad1b47afd98/2f292b4e710e8682 b/.hypothesis/examples/17015ad1b47afd98/2f292b4e710e8682 deleted file mode 100644 index b647d27..0000000 Binary files a/.hypothesis/examples/17015ad1b47afd98/2f292b4e710e8682 and /dev/null differ diff --git a/.hypothesis/examples/17015ad1b47afd98/310dfd8bbc90cba3 b/.hypothesis/examples/17015ad1b47afd98/310dfd8bbc90cba3 new file mode 100644 index 0000000..035b8c2 Binary files /dev/null and b/.hypothesis/examples/17015ad1b47afd98/310dfd8bbc90cba3 differ diff --git a/.hypothesis/examples/17015ad1b47afd98/3b91d6fc6c04488b b/.hypothesis/examples/17015ad1b47afd98/3b91d6fc6c04488b new file mode 100644 index 0000000..329f226 Binary files /dev/null and b/.hypothesis/examples/17015ad1b47afd98/3b91d6fc6c04488b differ diff --git a/.hypothesis/examples/17015ad1b47afd98/49e6f38c5cc772ec b/.hypothesis/examples/17015ad1b47afd98/49e6f38c5cc772ec new file mode 100644 index 0000000..5c100e8 Binary files /dev/null and b/.hypothesis/examples/17015ad1b47afd98/49e6f38c5cc772ec differ diff --git a/.hypothesis/examples/17015ad1b47afd98/5135a9631c5b557d b/.hypothesis/examples/17015ad1b47afd98/5135a9631c5b557d new file mode 100644 index 0000000..650fe7c --- /dev/null +++ b/.hypothesis/examples/17015ad1b47afd98/5135a9631c5b557d @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.hypothesis/examples/17015ad1b47afd98/56980d5ed7b87686 b/.hypothesis/examples/17015ad1b47afd98/56980d5ed7b87686 deleted file mode 100644 index 7361f5f..0000000 Binary files a/.hypothesis/examples/17015ad1b47afd98/56980d5ed7b87686 and /dev/null differ diff --git a/.hypothesis/examples/17015ad1b47afd98/5e8285414e40b47e b/.hypothesis/examples/17015ad1b47afd98/5e8285414e40b47e new file mode 100644 index 0000000..037abe2 --- /dev/null +++ b/.hypothesis/examples/17015ad1b47afd98/5e8285414e40b47e @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.hypothesis/examples/17015ad1b47afd98/61b71c2df2d87966 b/.hypothesis/examples/17015ad1b47afd98/61b71c2df2d87966 deleted file mode 100644 index d03d367..0000000 Binary files a/.hypothesis/examples/17015ad1b47afd98/61b71c2df2d87966 and /dev/null differ diff --git a/.hypothesis/examples/17015ad1b47afd98/69b43aa9ca8c9717 b/.hypothesis/examples/17015ad1b47afd98/69b43aa9ca8c9717 deleted file mode 100644 index 9398068..0000000 Binary files a/.hypothesis/examples/17015ad1b47afd98/69b43aa9ca8c9717 and /dev/null differ diff --git a/.hypothesis/examples/17015ad1b47afd98/745fc588673e7088 b/.hypothesis/examples/17015ad1b47afd98/745fc588673e7088 deleted file mode 100644 index 4a6a131..0000000 Binary files a/.hypothesis/examples/17015ad1b47afd98/745fc588673e7088 and /dev/null differ diff --git a/.hypothesis/examples/17015ad1b47afd98/79086a9d57f9948d b/.hypothesis/examples/17015ad1b47afd98/79086a9d57f9948d deleted file mode 100644 index 460c58e..0000000 Binary files a/.hypothesis/examples/17015ad1b47afd98/79086a9d57f9948d and /dev/null differ diff --git a/.hypothesis/examples/17015ad1b47afd98/8221fd2283c91e1f b/.hypothesis/examples/17015ad1b47afd98/8221fd2283c91e1f deleted file mode 100644 index 7401b2e..0000000 Binary files a/.hypothesis/examples/17015ad1b47afd98/8221fd2283c91e1f and /dev/null differ diff --git a/.hypothesis/examples/17015ad1b47afd98/8611cbd7e46390b8 b/.hypothesis/examples/17015ad1b47afd98/8611cbd7e46390b8 deleted file mode 100644 index f906aa7..0000000 Binary files a/.hypothesis/examples/17015ad1b47afd98/8611cbd7e46390b8 and /dev/null differ diff --git a/.hypothesis/examples/17015ad1b47afd98/8b092171a745ad44 b/.hypothesis/examples/17015ad1b47afd98/8b092171a745ad44 deleted file mode 100644 index 6368d9d..0000000 --- a/.hypothesis/examples/17015ad1b47afd98/8b092171a745ad44 +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.hypothesis/examples/17015ad1b47afd98/8ee2d9884de49d9a b/.hypothesis/examples/17015ad1b47afd98/8ee2d9884de49d9a deleted file mode 100644 index 87376ae..0000000 Binary files a/.hypothesis/examples/17015ad1b47afd98/8ee2d9884de49d9a and /dev/null differ diff --git a/.hypothesis/examples/17015ad1b47afd98/9d45399b0c0edc9f b/.hypothesis/examples/17015ad1b47afd98/9d45399b0c0edc9f new file mode 100644 index 0000000..5b96cd0 --- /dev/null +++ b/.hypothesis/examples/17015ad1b47afd98/9d45399b0c0edc9f @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.hypothesis/examples/17015ad1b47afd98/b0d0244d1f73df81 b/.hypothesis/examples/17015ad1b47afd98/b0d0244d1f73df81 deleted file mode 100644 index ec53a8a..0000000 Binary files a/.hypothesis/examples/17015ad1b47afd98/b0d0244d1f73df81 and /dev/null differ diff --git a/.hypothesis/examples/17015ad1b47afd98/bc4a06b69e0b9538 b/.hypothesis/examples/17015ad1b47afd98/bc4a06b69e0b9538 new file mode 100644 index 0000000..7b72f6c Binary files /dev/null and b/.hypothesis/examples/17015ad1b47afd98/bc4a06b69e0b9538 differ diff --git a/.hypothesis/examples/17015ad1b47afd98/df031fe309e7c5bf b/.hypothesis/examples/17015ad1b47afd98/df031fe309e7c5bf deleted file mode 100644 index 6e595fc..0000000 --- a/.hypothesis/examples/17015ad1b47afd98/df031fe309e7c5bf +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.hypothesis/examples/17015ad1b47afd98/edef7fb7ab16f7c5 b/.hypothesis/examples/17015ad1b47afd98/edef7fb7ab16f7c5 new file mode 100644 index 0000000..6fb13f6 --- /dev/null +++ b/.hypothesis/examples/17015ad1b47afd98/edef7fb7ab16f7c5 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/.hypothesis/examples/641567e7f1117698/003d747d49469ded b/.hypothesis/examples/641567e7f1117698/003d747d49469ded new file mode 100644 index 0000000..4801e1d Binary files /dev/null and b/.hypothesis/examples/641567e7f1117698/003d747d49469ded differ diff --git a/.hypothesis/examples/641567e7f1117698/005f5867178a5b25 b/.hypothesis/examples/641567e7f1117698/005f5867178a5b25 deleted file mode 100644 index 99d1269..0000000 --- a/.hypothesis/examples/641567e7f1117698/005f5867178a5b25 +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.hypothesis/examples/641567e7f1117698/0478b7c7ead9c10d b/.hypothesis/examples/641567e7f1117698/0478b7c7ead9c10d deleted file mode 100644 index 893e09d..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/0478b7c7ead9c10d and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/0fa317797ca6e4fc b/.hypothesis/examples/641567e7f1117698/0fa317797ca6e4fc new file mode 100644 index 0000000..844b674 Binary files /dev/null and b/.hypothesis/examples/641567e7f1117698/0fa317797ca6e4fc differ diff --git a/.hypothesis/examples/641567e7f1117698/167c6af33b70f99f b/.hypothesis/examples/641567e7f1117698/167c6af33b70f99f new file mode 100644 index 0000000..3b09c3d Binary files /dev/null and b/.hypothesis/examples/641567e7f1117698/167c6af33b70f99f differ diff --git a/.hypothesis/examples/641567e7f1117698/1cd68f1893d28b93 b/.hypothesis/examples/641567e7f1117698/1cd68f1893d28b93 deleted file mode 100644 index 1e4c7a3..0000000 --- a/.hypothesis/examples/641567e7f1117698/1cd68f1893d28b93 +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/.hypothesis/examples/641567e7f1117698/1d14332589e1f360 b/.hypothesis/examples/641567e7f1117698/1d14332589e1f360 deleted file mode 100644 index 4b05fc7..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/1d14332589e1f360 and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/203107b3bbad5816 b/.hypothesis/examples/641567e7f1117698/203107b3bbad5816 deleted file mode 100644 index 406c80a..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/203107b3bbad5816 and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/2bd9f6ed10af66c0 b/.hypothesis/examples/641567e7f1117698/2bd9f6ed10af66c0 deleted file mode 100644 index 938aced..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/2bd9f6ed10af66c0 and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/2f69395da78f14d8 b/.hypothesis/examples/641567e7f1117698/2f69395da78f14d8 deleted file mode 100644 index 77a7ec0..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/2f69395da78f14d8 and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/3c6c5c8e00e8affe b/.hypothesis/examples/641567e7f1117698/3c6c5c8e00e8affe deleted file mode 100644 index 4943902..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/3c6c5c8e00e8affe and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/420facf54201ae10 b/.hypothesis/examples/641567e7f1117698/420facf54201ae10 new file mode 100644 index 0000000..eb32430 Binary files /dev/null and b/.hypothesis/examples/641567e7f1117698/420facf54201ae10 differ diff --git a/.hypothesis/examples/641567e7f1117698/45f01200098f83fe b/.hypothesis/examples/641567e7f1117698/45f01200098f83fe deleted file mode 100644 index f38d7c8..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/45f01200098f83fe and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/47977696f309c829 b/.hypothesis/examples/641567e7f1117698/47977696f309c829 deleted file mode 100644 index 0af8a4e..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/47977696f309c829 and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/4aebbeaae7b3a137 b/.hypothesis/examples/641567e7f1117698/4aebbeaae7b3a137 new file mode 100644 index 0000000..9cb8041 Binary files /dev/null and b/.hypothesis/examples/641567e7f1117698/4aebbeaae7b3a137 differ diff --git a/.hypothesis/examples/641567e7f1117698/5b5722a4fd36dcf6 b/.hypothesis/examples/641567e7f1117698/5b5722a4fd36dcf6 new file mode 100644 index 0000000..8ae82db Binary files /dev/null and b/.hypothesis/examples/641567e7f1117698/5b5722a4fd36dcf6 differ diff --git a/.hypothesis/examples/641567e7f1117698/5be455f23fea5189 b/.hypothesis/examples/641567e7f1117698/5be455f23fea5189 deleted file mode 100644 index f4afa45..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/5be455f23fea5189 and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/63399f455589d4ba b/.hypothesis/examples/641567e7f1117698/63399f455589d4ba deleted file mode 100644 index ab41705..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/63399f455589d4ba and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/6d688fd550d32db0 b/.hypothesis/examples/641567e7f1117698/6d688fd550d32db0 deleted file mode 100644 index 9e6d12c..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/6d688fd550d32db0 and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/7407b5bc15afb4de b/.hypothesis/examples/641567e7f1117698/7407b5bc15afb4de new file mode 100644 index 0000000..3900a51 Binary files /dev/null and b/.hypothesis/examples/641567e7f1117698/7407b5bc15afb4de differ diff --git a/.hypothesis/examples/641567e7f1117698/7f8faf9da637e86f b/.hypothesis/examples/641567e7f1117698/7f8faf9da637e86f deleted file mode 100644 index 474cc5c..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/7f8faf9da637e86f and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/86841ab5ff344485 b/.hypothesis/examples/641567e7f1117698/86841ab5ff344485 new file mode 100644 index 0000000..0a781a3 Binary files /dev/null and b/.hypothesis/examples/641567e7f1117698/86841ab5ff344485 differ diff --git a/.hypothesis/examples/641567e7f1117698/881b6ce80b5bd1fc b/.hypothesis/examples/641567e7f1117698/881b6ce80b5bd1fc deleted file mode 100644 index c8c74ca..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/881b6ce80b5bd1fc and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/9cabd2809ed0730b b/.hypothesis/examples/641567e7f1117698/9cabd2809ed0730b new file mode 100644 index 0000000..1d95319 Binary files /dev/null and b/.hypothesis/examples/641567e7f1117698/9cabd2809ed0730b differ diff --git a/.hypothesis/examples/641567e7f1117698/a6039ffc453749e1 b/.hypothesis/examples/641567e7f1117698/a6039ffc453749e1 deleted file mode 100644 index 9878f1a..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/a6039ffc453749e1 and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/b19b7b820dddb3c6 b/.hypothesis/examples/641567e7f1117698/b19b7b820dddb3c6 deleted file mode 100644 index ecb949e..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/b19b7b820dddb3c6 and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/b3519a45e48ca658 b/.hypothesis/examples/641567e7f1117698/b3519a45e48ca658 new file mode 100644 index 0000000..9824105 Binary files /dev/null and b/.hypothesis/examples/641567e7f1117698/b3519a45e48ca658 differ diff --git a/.hypothesis/examples/641567e7f1117698/b52e65a9e0e8f9db b/.hypothesis/examples/641567e7f1117698/b52e65a9e0e8f9db deleted file mode 100644 index cfd86fa..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/b52e65a9e0e8f9db and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/b8ea6d3dfe56288b b/.hypothesis/examples/641567e7f1117698/b8ea6d3dfe56288b new file mode 100644 index 0000000..f219235 Binary files /dev/null and b/.hypothesis/examples/641567e7f1117698/b8ea6d3dfe56288b differ diff --git a/.hypothesis/examples/641567e7f1117698/c17293c1c7f91651 b/.hypothesis/examples/641567e7f1117698/c17293c1c7f91651 deleted file mode 100644 index 29ce808..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/c17293c1c7f91651 and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/c5a0a2529d2deb60 b/.hypothesis/examples/641567e7f1117698/c5a0a2529d2deb60 deleted file mode 100644 index 51d72fb..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/c5a0a2529d2deb60 and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/ca1fafbdd4c60ea7 b/.hypothesis/examples/641567e7f1117698/ca1fafbdd4c60ea7 new file mode 100644 index 0000000..a677575 Binary files /dev/null and b/.hypothesis/examples/641567e7f1117698/ca1fafbdd4c60ea7 differ diff --git a/.hypothesis/examples/641567e7f1117698/cc0f1d8c6aff0e8b b/.hypothesis/examples/641567e7f1117698/cc0f1d8c6aff0e8b new file mode 100644 index 0000000..610471e Binary files /dev/null and b/.hypothesis/examples/641567e7f1117698/cc0f1d8c6aff0e8b differ diff --git a/.hypothesis/examples/641567e7f1117698/cfb16a37ef90423b b/.hypothesis/examples/641567e7f1117698/cfb16a37ef90423b deleted file mode 100644 index 6402578..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/cfb16a37ef90423b and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/e0f086f15d94142d b/.hypothesis/examples/641567e7f1117698/e0f086f15d94142d new file mode 100644 index 0000000..bf16dc9 Binary files /dev/null and b/.hypothesis/examples/641567e7f1117698/e0f086f15d94142d differ diff --git a/.hypothesis/examples/641567e7f1117698/ea786d015fba3bee b/.hypothesis/examples/641567e7f1117698/ea786d015fba3bee deleted file mode 100644 index 23dcd5a..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/ea786d015fba3bee and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/f41cb651e160d454 b/.hypothesis/examples/641567e7f1117698/f41cb651e160d454 deleted file mode 100644 index 4f7bfb6..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/f41cb651e160d454 and /dev/null differ diff --git a/.hypothesis/examples/641567e7f1117698/f7b6a134061a22a3 b/.hypothesis/examples/641567e7f1117698/f7b6a134061a22a3 deleted file mode 100644 index f4de7f5..0000000 Binary files a/.hypothesis/examples/641567e7f1117698/f7b6a134061a22a3 and /dev/null differ diff --git a/.hypothesis/examples/c5004b86438ec8a9/a1a8c54704cd3ce5 b/.hypothesis/examples/c5004b86438ec8a9/a1a8c54704cd3ce5 deleted file mode 100644 index ee13fd2..0000000 Binary files a/.hypothesis/examples/c5004b86438ec8a9/a1a8c54704cd3ce5 and /dev/null differ diff --git a/.hypothesis/examples/c72254ca7f2d3ae9/18c072a6c0de03a3 b/.hypothesis/examples/c72254ca7f2d3ae9/18c072a6c0de03a3 deleted file mode 100644 index 9d4e4f1..0000000 Binary files a/.hypothesis/examples/c72254ca7f2d3ae9/18c072a6c0de03a3 and /dev/null differ diff --git a/.hypothesis/examples/c72254ca7f2d3ae9/76c7ab7f4af319c7 b/.hypothesis/examples/c72254ca7f2d3ae9/76c7ab7f4af319c7 deleted file mode 100644 index c28f678..0000000 Binary files a/.hypothesis/examples/c72254ca7f2d3ae9/76c7ab7f4af319c7 and /dev/null differ diff --git a/.hypothesis/examples/dc26b29be33957c5/34ca52b9868177da b/.hypothesis/examples/dc26b29be33957c5/34ca52b9868177da deleted file mode 100644 index 805297c..0000000 Binary files a/.hypothesis/examples/dc26b29be33957c5/34ca52b9868177da and /dev/null differ diff --git a/.hypothesis/examples/dc26b29be33957c5/34d913d63909f8ea b/.hypothesis/examples/dc26b29be33957c5/34d913d63909f8ea deleted file mode 100644 index ea56339..0000000 Binary files a/.hypothesis/examples/dc26b29be33957c5/34d913d63909f8ea and /dev/null differ diff --git a/.hypothesis/examples/dc26b29be33957c5/3f1b35cc98d1fb17 b/.hypothesis/examples/dc26b29be33957c5/3f1b35cc98d1fb17 new file mode 100644 index 0000000..1744897 Binary files /dev/null and b/.hypothesis/examples/dc26b29be33957c5/3f1b35cc98d1fb17 differ diff --git a/.hypothesis/examples/dc26b29be33957c5/47917d3045f708ac b/.hypothesis/examples/dc26b29be33957c5/47917d3045f708ac deleted file mode 100644 index 31fe863..0000000 Binary files a/.hypothesis/examples/dc26b29be33957c5/47917d3045f708ac and /dev/null differ diff --git a/.hypothesis/examples/dc26b29be33957c5/4b5882e6feb52553 b/.hypothesis/examples/dc26b29be33957c5/4b5882e6feb52553 deleted file mode 100644 index 5c95675..0000000 Binary files a/.hypothesis/examples/dc26b29be33957c5/4b5882e6feb52553 and /dev/null differ diff --git a/.hypothesis/examples/dc26b29be33957c5/4f5107fafb6b54a4 b/.hypothesis/examples/dc26b29be33957c5/4f5107fafb6b54a4 new file mode 100644 index 0000000..ffc33bf Binary files /dev/null and b/.hypothesis/examples/dc26b29be33957c5/4f5107fafb6b54a4 differ diff --git a/.hypothesis/examples/dc26b29be33957c5/7740d35b09376fb6 b/.hypothesis/examples/dc26b29be33957c5/7740d35b09376fb6 deleted file mode 100644 index 3aa0fbf..0000000 Binary files a/.hypothesis/examples/dc26b29be33957c5/7740d35b09376fb6 and /dev/null differ diff --git a/.hypothesis/examples/dc26b29be33957c5/8c833dd8753e1daa b/.hypothesis/examples/dc26b29be33957c5/8c833dd8753e1daa deleted file mode 100644 index 087ea4e..0000000 Binary files a/.hypothesis/examples/dc26b29be33957c5/8c833dd8753e1daa and /dev/null differ diff --git a/.hypothesis/examples/dc26b29be33957c5/ac70533cd7a9e886 b/.hypothesis/examples/dc26b29be33957c5/ac70533cd7a9e886 deleted file mode 100644 index 85a71ea..0000000 Binary files a/.hypothesis/examples/dc26b29be33957c5/ac70533cd7a9e886 and /dev/null differ diff --git a/.hypothesis/examples/dc26b29be33957c5/ca0e04d21db8220c b/.hypothesis/examples/dc26b29be33957c5/ca0e04d21db8220c new file mode 100644 index 0000000..43f275a Binary files /dev/null and b/.hypothesis/examples/dc26b29be33957c5/ca0e04d21db8220c differ diff --git a/.hypothesis/examples/dc26b29be33957c5/da26276c71f1ad71 b/.hypothesis/examples/dc26b29be33957c5/da26276c71f1ad71 deleted file mode 100644 index 52bf383..0000000 Binary files a/.hypothesis/examples/dc26b29be33957c5/da26276c71f1ad71 and /dev/null differ diff --git a/.hypothesis/examples/dc26b29be33957c5/ee3ad785c37b610d b/.hypothesis/examples/dc26b29be33957c5/ee3ad785c37b610d deleted file mode 100644 index 81d5bc2..0000000 Binary files a/.hypothesis/examples/dc26b29be33957c5/ee3ad785c37b610d and /dev/null differ diff --git a/.hypothesis/examples/dc26b29be33957c5/f616bd537b88b020 b/.hypothesis/examples/dc26b29be33957c5/f616bd537b88b020 new file mode 100644 index 0000000..98fce50 Binary files /dev/null and b/.hypothesis/examples/dc26b29be33957c5/f616bd537b88b020 differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/00d848fe2a684240 b/.hypothesis/examples/ec453dcb33aa8b66/00d848fe2a684240 new file mode 100644 index 0000000..69fcea5 Binary files /dev/null and b/.hypothesis/examples/ec453dcb33aa8b66/00d848fe2a684240 differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/0280f750919c77c9 b/.hypothesis/examples/ec453dcb33aa8b66/0280f750919c77c9 new file mode 100644 index 0000000..9a892b5 Binary files /dev/null and b/.hypothesis/examples/ec453dcb33aa8b66/0280f750919c77c9 differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/0c69f7daba8b9b86 b/.hypothesis/examples/ec453dcb33aa8b66/0c69f7daba8b9b86 deleted file mode 100644 index 9034b55..0000000 Binary files a/.hypothesis/examples/ec453dcb33aa8b66/0c69f7daba8b9b86 and /dev/null differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/0e4509f58fe57ea9 b/.hypothesis/examples/ec453dcb33aa8b66/0e4509f58fe57ea9 new file mode 100644 index 0000000..25fc896 Binary files /dev/null and b/.hypothesis/examples/ec453dcb33aa8b66/0e4509f58fe57ea9 differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/0f0ccaa6855b4743 b/.hypothesis/examples/ec453dcb33aa8b66/0f0ccaa6855b4743 new file mode 100644 index 0000000..b094991 Binary files /dev/null and b/.hypothesis/examples/ec453dcb33aa8b66/0f0ccaa6855b4743 differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/0f42e404bef2b1a3 b/.hypothesis/examples/ec453dcb33aa8b66/0f42e404bef2b1a3 deleted file mode 100644 index 1471346..0000000 Binary files a/.hypothesis/examples/ec453dcb33aa8b66/0f42e404bef2b1a3 and /dev/null differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/1b1de29bcaea4e9e b/.hypothesis/examples/ec453dcb33aa8b66/1b1de29bcaea4e9e new file mode 100644 index 0000000..815a754 Binary files /dev/null and b/.hypothesis/examples/ec453dcb33aa8b66/1b1de29bcaea4e9e differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/204fd63d54e5ffd1 b/.hypothesis/examples/ec453dcb33aa8b66/204fd63d54e5ffd1 new file mode 100644 index 0000000..ba755f2 Binary files /dev/null and b/.hypothesis/examples/ec453dcb33aa8b66/204fd63d54e5ffd1 differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/207b79c0dd1b6fba b/.hypothesis/examples/ec453dcb33aa8b66/207b79c0dd1b6fba deleted file mode 100644 index 6345bd4..0000000 Binary files a/.hypothesis/examples/ec453dcb33aa8b66/207b79c0dd1b6fba and /dev/null differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/218d87f650043d4d b/.hypothesis/examples/ec453dcb33aa8b66/218d87f650043d4d deleted file mode 100644 index cfd6a40..0000000 Binary files a/.hypothesis/examples/ec453dcb33aa8b66/218d87f650043d4d and /dev/null differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/2498de236a3b0dbf b/.hypothesis/examples/ec453dcb33aa8b66/2498de236a3b0dbf new file mode 100644 index 0000000..52fc6cb Binary files /dev/null and b/.hypothesis/examples/ec453dcb33aa8b66/2498de236a3b0dbf differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/28a055f3278de950 b/.hypothesis/examples/ec453dcb33aa8b66/28a055f3278de950 deleted file mode 100644 index bfce649..0000000 Binary files a/.hypothesis/examples/ec453dcb33aa8b66/28a055f3278de950 and /dev/null differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/29a465ca925a55c2 b/.hypothesis/examples/ec453dcb33aa8b66/29a465ca925a55c2 deleted file mode 100644 index 1a9248f..0000000 Binary files a/.hypothesis/examples/ec453dcb33aa8b66/29a465ca925a55c2 and /dev/null differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/373d5339acd1960f b/.hypothesis/examples/ec453dcb33aa8b66/373d5339acd1960f new file mode 100644 index 0000000..6394bf6 Binary files /dev/null and b/.hypothesis/examples/ec453dcb33aa8b66/373d5339acd1960f differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/3b15208ee23b0387 b/.hypothesis/examples/ec453dcb33aa8b66/3b15208ee23b0387 deleted file mode 100644 index 0bbbf2f..0000000 Binary files a/.hypothesis/examples/ec453dcb33aa8b66/3b15208ee23b0387 and /dev/null differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/3be6ee08630f7415 b/.hypothesis/examples/ec453dcb33aa8b66/3be6ee08630f7415 deleted file mode 100644 index da37579..0000000 Binary files a/.hypothesis/examples/ec453dcb33aa8b66/3be6ee08630f7415 and /dev/null differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/41d22663c8456cf1 b/.hypothesis/examples/ec453dcb33aa8b66/41d22663c8456cf1 deleted file mode 100644 index 8ed04c1..0000000 Binary files a/.hypothesis/examples/ec453dcb33aa8b66/41d22663c8456cf1 and /dev/null differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/51ab005a386f8742 b/.hypothesis/examples/ec453dcb33aa8b66/51ab005a386f8742 deleted file mode 100644 index 6af7a69..0000000 Binary files a/.hypothesis/examples/ec453dcb33aa8b66/51ab005a386f8742 and /dev/null differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/51c86c3fc96bfb21 b/.hypothesis/examples/ec453dcb33aa8b66/51c86c3fc96bfb21 new file mode 100644 index 0000000..db4fb2a Binary files /dev/null and b/.hypothesis/examples/ec453dcb33aa8b66/51c86c3fc96bfb21 differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/52f15fc15e039804 b/.hypothesis/examples/ec453dcb33aa8b66/52f15fc15e039804 deleted file mode 100644 index 11037b4..0000000 Binary files a/.hypothesis/examples/ec453dcb33aa8b66/52f15fc15e039804 and /dev/null differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/5e1b75e52e4472a7 b/.hypothesis/examples/ec453dcb33aa8b66/5e1b75e52e4472a7 deleted file mode 100644 index 47ff157..0000000 Binary files a/.hypothesis/examples/ec453dcb33aa8b66/5e1b75e52e4472a7 and /dev/null differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/67d0320a64a5b588 b/.hypothesis/examples/ec453dcb33aa8b66/67d0320a64a5b588 new file mode 100644 index 0000000..eaf1c1e Binary files /dev/null and b/.hypothesis/examples/ec453dcb33aa8b66/67d0320a64a5b588 differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/82995b8855a9ed39 b/.hypothesis/examples/ec453dcb33aa8b66/82995b8855a9ed39 new file mode 100644 index 0000000..fb4f94d Binary files /dev/null and b/.hypothesis/examples/ec453dcb33aa8b66/82995b8855a9ed39 differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/a4e2f3a0aa88806f b/.hypothesis/examples/ec453dcb33aa8b66/a4e2f3a0aa88806f new file mode 100644 index 0000000..23745d8 Binary files /dev/null and b/.hypothesis/examples/ec453dcb33aa8b66/a4e2f3a0aa88806f differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/aee00180e7174861 b/.hypothesis/examples/ec453dcb33aa8b66/aee00180e7174861 new file mode 100644 index 0000000..906d9c9 Binary files /dev/null and b/.hypothesis/examples/ec453dcb33aa8b66/aee00180e7174861 differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/b691cacbafa2b728 b/.hypothesis/examples/ec453dcb33aa8b66/b691cacbafa2b728 deleted file mode 100644 index 2502421..0000000 Binary files a/.hypothesis/examples/ec453dcb33aa8b66/b691cacbafa2b728 and /dev/null differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/b6d137b15bd5d73b b/.hypothesis/examples/ec453dcb33aa8b66/b6d137b15bd5d73b new file mode 100644 index 0000000..5873064 Binary files /dev/null and b/.hypothesis/examples/ec453dcb33aa8b66/b6d137b15bd5d73b differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/b97615e01bdf629a b/.hypothesis/examples/ec453dcb33aa8b66/b97615e01bdf629a new file mode 100644 index 0000000..082221f Binary files /dev/null and b/.hypothesis/examples/ec453dcb33aa8b66/b97615e01bdf629a differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/d21336a11fb4d335 b/.hypothesis/examples/ec453dcb33aa8b66/d21336a11fb4d335 new file mode 100644 index 0000000..f862c7c Binary files /dev/null and b/.hypothesis/examples/ec453dcb33aa8b66/d21336a11fb4d335 differ diff --git a/.hypothesis/examples/ec453dcb33aa8b66/f41ac3052b176061 b/.hypothesis/examples/ec453dcb33aa8b66/f41ac3052b176061 deleted file mode 100644 index 683ea2e..0000000 Binary files a/.hypothesis/examples/ec453dcb33aa8b66/f41ac3052b176061 and /dev/null differ diff --git a/.hypothesis/examples/ef6354fc2348e0ad/592953b9926ddec7 b/.hypothesis/examples/ef6354fc2348e0ad/592953b9926ddec7 new file mode 100644 index 0000000..331f272 --- /dev/null +++ b/.hypothesis/examples/ef6354fc2348e0ad/592953b9926ddec7 @@ -0,0 +1 @@ +d diff --git a/.hypothesis/examples/ef6354fc2348e0ad/e7faf0b097a6f469 b/.hypothesis/examples/ef6354fc2348e0ad/e7faf0b097a6f469 deleted file mode 100644 index cf2a103..0000000 Binary files a/.hypothesis/examples/ef6354fc2348e0ad/e7faf0b097a6f469 and /dev/null differ diff --git a/LANGUAGE.rst b/LANGUAGE.rst new file mode 100644 index 0000000..ed3e942 --- /dev/null +++ b/LANGUAGE.rst @@ -0,0 +1,375 @@ +################################# +The Actinide Programming Language +################################# + +***** +Forms +***** + +* The basic unit of Actinide syntax. + +* The basic unit of Actinide evaluation. + +* A program is evaluated by *reducing* forms to produce a final value, applying + side effects during the reduction. + +* What does a form look like? + + * Simple forms: literals (and intro to types) + + * Integers: a leading - sign for negative numbers, followed by a + sequence of digits and underscores. Represent base-ten values with no + fractional part. Examples: ``10``, ``-2_049``. + + * Decimals: a leading - sign for negative numbers, followed by a + sequence of digits and underscores, followed by a dot, followed by a + sequence of digits and underscores. Represent base-ten values which + may have a factional part. Examples: ``10.0``, ``-2_049.501_2``. + + * Strings: any sequence of characters other than ``"`` or ``\``, + enclosed in matching ``"`` marks. The sequences ``\"`` and ``\\`` are + "escape" sequences, representing a ``"`` or ``\`` character + respectively. Examples: ``"Hello, world."``, ``"😡💩🚀"``, ``"Quoth + the raven, \"Four Oh Four.\""``. + + * Booleans: the special values meaning "true" and "false." Preferred + for boolean logic operations. They are ``#t`` for true, and ``#f`` + for false. + + * Simple forms: symbols + + * Sequences of letters, numbers, and symbols not surrounded by quotes, + and which are not themselves integers, decimals, or booleans. + + * Represent variables and constants in the program's source. + + * Evaluation of variables is covered later in this document. + + * Examples: ``hello``, ``+``, ``my-🚀``. + + * Special mention: comments + + * Cannot appear *inside* a string. + + * Starts with a ``;``, continues to the end of the line. + + * Dropped from the program entirely. + + * Examples: ``; this function is extremely spicy.`` + +* Compound forms: lists + + * An opening ``(``, followed by a sequence of "subforms" separated by + spaces, followed by a closing ``)``. + + * Subforms may be any form, including another list. + + * Represent function application as well as special + +* Compound forms: quotes, quasiquotes, and unqoute forms. + + * The forms ``'``, ``\```, ``,``, and ``,@`` represent "quote" forms. + + * These are discussed in detail in the Macros section, later on. + +****************** +Simple Expressions +****************** + +* Evaluation of a form *reduces* the form to a simpler form - ideally, into a + list of atomic values. + +* Every kind of form can be evaluated. + +* Evaluation of literals: + + * Integers, decimals, strings, booleans evaluate to themselves. The number + ``1`` or the string ``"Hello, world"`` cannot be reduced any further. + +* Evaluation of symbols: + + * The symbol is replaced by a value from the current *environment*. + + * This is analogous to variable expansion in other languages. + + * How do environments get their values? Defines and function application, + covered below. + + * Certain symbols are *built in* and are automatically given values in the + top-level environment before the program starts. + +******************** +Function Application +******************** + +* Evaluation of lists: + + * A list that starts with the symbols ``begin``, ``values``, ``if``, + ``lambda``, ``define``, ``define-macro``, or ``quote`` is a *special + form*, which are covered separately. + + * Any other list represents a function application. + +* The subforms representing the list elements are evaluated first, left to + right. + +* If the first subform evaluates to a procedure + +* During application: + + * A new environment is created, with the names of the arguments bound to + the values from the function application expression. + + * The body of the function is run as a program, in this environment. + + * The result of the last form in the function is the result of the function + application. + +************* +Special Forms +************* + +Lists that begin with one of the following symbols are evaluated specially. + +* ``begin``: A ``begin`` form evaluates a sequence of subforms, reducing to the + result of the last subform in the sequence. Example: + + :: + + (begin + ; define a function... + (define (f) 1) + ; ...and call it + (f)) + + The forms whose results are discarded are still evaluated for their side + effects. + +* ``values``: A ``values`` form evaluates a sequence of subforms, then reduces + to those values in the context of the containing form. This allows functions + to return multiple values. Example: + + :: + + (begin + (define (two x) (values x x)) + (= (two 53))) + + The ``two`` function returns two values, which are placed in the argument + positions for the ``=`` function. This program reduces to ``#t`` if run, + and defines ``two`` as a side effect. + +* ``if``: An ``if`` form must include a ``cond`` subform producing exactly one + value, and either one or two consequent subforms (named ``true`` and + ``false`` subforms in this document). + + * The ``if`` form first evaluates the ``cond`` subform. + + * If it evaluates to a true value (``#t``, a non-zero integer, a non-zero + decimal, a non-empty string, or a non-nil ``cons``), then the ``if`` + form evaluates the ``true`` subform. + + * If the ``cond`` subform produces a false value (any other value), then + the ``if`` form evaluates the ``false`` subform. + + * If the ``if`` form does not have a ``false`` subform, the ``if`` form + evaluates to ``nil`` when the ``cond`` subform evaluates to a false + value. + + * Examples: ``(if #t 1)`` (always equal to ``1``), ``(if some-var "okay" + "failure")``. + +* ``lambda``: A ``lambda`` form defines a procedure, and evaluates to a + procedure value which can be used to apply the newly-defined procedure. + + * Must include a ``formals`` subform, which is generally a list of argument + names (as symbols). + + * May include a sequence of body subforms, which are evaluated in order + whenever the function is applied. + + * Functions capture the environment in effect when they are defined. + Symbols within the function body can refer to names defined in the + surrounding lexical context. + + * Function bodies are evaluated in a new environment for each application, + with the symbols representing the arguments bound to the corresponding + values in the function application form. + + * Examples: + + :: + + (lambda () 1) + + This defines a constant function (which takes no arguments) whose + evaluation is always 1. + + :: + + (begin + (define x 5) + (lambda () x)) + + This defines a constant function whose evaluation is always the value of + ``x`` in the top-level environment (initially 5). + + :: + + (lambda (a b) (+ a b)) + + This defines a binary function (which takes two arguments) whose + evaluation is the sum of those arguments. This is a simple replacement + for the ``+`` function itself, but it illustrates the idea that functions + can include other functions. + +* ``define``: declares new bindings. This has two formats: + + * ``(define symbol value)``: evaluates the ``value`` subform, and binds the + result to ``symbol`` in the current environment. Example: + + :: + + (begin + ; Bind x to a value + (define x 5) + ; Expands x in the same environment + x) + + This program evaluates to ``5``. + + * ``(define (name formals...) body...)``: defines a function and binds it + to ``name`` in the current environemnt. + + This is expanded to an equivalent ``lambda`` form, within a ``define`` + form binding the resulting procedure to ``name``. For example: + + :: + + (define (f a b) (+ a b)) + + is equivalent to + + :: + + (define f + (lambda (a b) (+ a b))) + +* ``define-macro``: This has the same syntaxes as the ``define`` form, but it + binds values to a special "macro table" which is used to transform code prior + to evaluation. Macros are described later in this document. + +* ``quote``: A ``quote`` form must have exactly one form in argument position. + It evaluates to exactly the argument form, without evaluating it. For example: + +:: + + (quote (+ 1 2)) + + evaluates to the list ``(+ 1 2)``. Quote forms are the easiest way to obtain + unevaluated symbols as values, and are an integral part of the Actinide macro + system. + +******************* +Loops and Recursion +******************* + +* To loop, a function must recurse. Actinide has no looping primitives other + than function application. + +* Actinide guarantees that functions that recurse in tail position, either + directly or indirectly, can recurse indefinitely. + +* What is tail position? + + * Function bodies: the final form of the function is in tail position with + respect to the function. + + * ``begin`` forms: the final subform is in tail position with respect to + the ``begin`` form. + + * ``if`` forms: the ``true`` subform is in tail position with respect to + the ``if`` form if the ``cond`` subform reduces to a true value. The + ``false`` subform is in tail position with respect to the ``if`` form if + the ``cond`` subform reduces to a false value. + + * If a form is in tail position with respect to its containing form, it is + in tail position with respect to *that* form's containing form, and so + on, out to the nearest ``lambda`` body or to the top level of the program. + +* Example: + + * Simple recursive factorial: + + :: + + (define (factorial n) + (if (= n 1) + 1 + (* n (factorial (- n 1))))) + + The ``factorial`` function *is not* called in tail position with respect + to the body of the ``factorial`` function: After reducing that function + application, the reduction of the outer ``factorial`` application still + needs to apply the ``*`` function to the result. + + Attempting to evaluate ``(factorial 1000)`` fails due to limits on call + depth: ``maximum recursion depth exceeded while calling a Python object`` + + :: + + (define (fact n a) + (if (= n 1) + a + (fact (- n 1) (* n a)))) + + The ``fact`` function *is* called in tail position with respect to the + body of ``fact``. Specifically, it is in tail position with respect to + the ``if`` form whenever ``n`` is not equal to ``1``, and the ``if`` form + is in tail position with respect to the body of the ``fact`` function. + + Evaluating ``(fact 1000 1)`` correctly computes the factorial of ``1000`` + on any machine with enough memory to store the result. + +****** +Macros +****** + +* Before Actinide evaluates a program, it *expands* a program. + +* Expansion replaces macros (defined by ``define-macro``, as above). + +* A *macro* is an Actinide procedure, as with ``lambda``, which accepts forms + as arguments and reduces to a new form. + +* Macros can be used to define new syntax. + +* Macro expansion is recursive: the result of expanding a macro is expanded + again, which allows macros to produce macro forms. + +* Example: The ``let-one`` macro defines a single local variable, with a known + value, and evaluates a body form in a temporary environment with that + variable bound. + +:: + + (define-macro (let-one binding body) + (begin + (define name (head binding)) + (define val (head (tail binding))) + `((lambda (,name) ,body) ,val)))) + + To use this macro, apply it as if it were a function: + +:: + + (let-one (x 1) x) + + This program evaluates to 1, but *does not* bind ``x`` in the top-level + environment. + +TO WRITE: + +* Comprehensive intro to quote forms +* Defining a simple macro +* Applying a simple macro diff --git a/README.rst b/README.rst index b5e0b37..1773cd6 100644 --- a/README.rst +++ b/README.rst @@ -240,9 +240,3 @@ Actinide functions returne a tuple of results rather than a single value: This two-way binding mechanism makes it straightforward to define interfaces between Actinide and the target domain. - -********************************* -The Actinide Programming Language -********************************* - -WIP diff --git a/actinide/__init__.py b/actinide/__init__.py index b6ace49..dbd2b9b 100644 --- a/actinide/__init__.py +++ b/actinide/__init__.py @@ -14,8 +14,11 @@ class BaseSession(object): port = ports.string_to_input_port(port) return reader.read(port, self.symbols) + def expand(self, form): + return expander.expand(form, self.symbols, self.macros) + def eval(self, form): - form = expander.expand(form, self.symbols, self.macros) + form = self.expand(form) cps = evaluator.eval(form, self.symbols, None) return evaluator.run(cps, self.environment, self.macros) @@ -68,14 +71,12 @@ class BaseSession(object): def eval(form): return self.eval(form) @self.bind_fn - def expand(form): - return expander.expand(form, self.symbols) - @self.bind_fn def symbol(val): return types.symbol(val, self.symbols) + self.bind_fn(self.expand) + self.bind_fn(self.display) self.bind_module(types) self.bind_module(core) - self.bind_fn(self.display) def standard_library(self): pass diff --git a/actinide/evaluator.py b/actinide/evaluator.py index 89878f8..45046a5 100644 --- a/actinide/evaluator.py +++ b/actinide/evaluator.py @@ -189,7 +189,7 @@ def eval(value, symbols, continuation): return if_(t.tail(value), symbols, continuation) if t.head(value) == symbols['define']: return define(t.tail(value), symbols, continuation, bind) - if t.head(value) == symbols['defmacro']: + if t.head(value) == symbols['define-macro']: return define(t.tail(value), symbols, continuation, macro_bind) if t.head(value) == symbols['lambda']: return lambda_(t.tail(value), symbols, continuation) diff --git a/actinide/expander.py b/actinide/expander.py index a72a64e..e925c19 100644 --- a/actinide/expander.py +++ b/actinide/expander.py @@ -20,7 +20,7 @@ def expand(form, symbols, macros): form = expand_if(form) elif head(form) == symbols['define']: form = expand_define(form, symbols) - elif head(form) == symbols['defmacro']: + elif head(form) == symbols['define-macro']: form = expand_define(form, symbols) elif head(form) == symbols['lambda']: form = expand_lambda(form, symbols) @@ -56,7 +56,7 @@ def expand_if(form): false, form = uncons(form) return list(head, cond, true, false) -# Expand a define or defmacro form. +# Expand a define or define-macro form. # # (define (NAME FORMALS) BODY) # => (define name (lambda FORMALS BODY)) diff --git a/primer.py b/primer.py deleted file mode 100644 index 6954bea..0000000 --- a/primer.py +++ /dev/null @@ -1,10 +0,0 @@ -import actinide as a -import actinide.types as t -import actinide.expander as x - -s = a.Session() - -def expand(form): - return x.expand(form, s.symbols, s.macros) - -s.macros[s.symbol('twice')] = lambda f: (t.list(f, f),) diff --git a/tests/test_expander.py b/tests/test_expander.py new file mode 100644 index 0000000..3e32d2c --- /dev/null +++ b/tests/test_expander.py @@ -0,0 +1,36 @@ +import actinide + +def test_known_expansion(): + s = actinide.Session() + s.run(''' + (begin + (define-macro (let-one binding body) + (begin + (define name (head binding)) + (define val (head (tail binding))) + `((lambda (,name) ,body) ,val)))) + ''') + program = s.read('(let-one (x 1) x)') + assert s.symbol('x') not in s.environment + assert (1,) == s.eval(program) + +def test_quasiquote_expansion(): + s = actinide.Session() + + program = s.read('`(a ,b c)`') + expansion = s.expand(program) + assert s.read("(cons 'a (cons b (cons 'c ())))") == expansion + +def test_nested_qq_expansion(): + s = actinide.Session() + + program = s.read('`((,a))`') + expansion = s.expand(program) + assert s.read("(cons (cons a ()) ())") == expansion + +def test_shorter_qq_expansion(): + s = actinide.Session() + + program = s.read('`(,a b)`') + expansion = s.expand(program) + assert s.read("(cons a (cons 'b ()))") == expansion -- cgit v1.2.3