<feed xmlns='http://www.w3.org/2005/Atom'>
<title>chromatopelma/csc/match.csc, branch main</title>
<subtitle>Partial r7rs implementation with a focus on ease of implementation and a reusable library. Work in progress.</subtitle>
<id>https://code.roseh.moe/chromatopelma/atom/csc/match.csc?h=main</id>
<link rel='self' href='https://code.roseh.moe/chromatopelma/atom/csc/match.csc?h=main'/>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/'/>
<updated>2022-08-02T02:35:19Z</updated>
<entry>
<title>Modify the project structure.</title>
<updated>2022-08-02T02:35:19Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@posteo.net</email>
</author>
<published>2022-08-02T02:35:19Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=acc561366f3fe6ec0377103f52ef0f7e923711c9'/>
<id>urn:sha1:acc561366f3fe6ec0377103f52ef0f7e923711c9</id>
<content type='text'>
Now the lib directory contains what will eventually end up on the
user's /usr/lib/csc. When I write make install, it will copy all of
the .csc files from lib into the destination lib directory. This means I
can start working on the standard library in lib/scheme.
</content>
</entry>
<entry>
<title>Improve the match syntax for constants.</title>
<updated>2022-07-25T02:08:13Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@posteo.net</email>
</author>
<published>2022-07-25T02:08:13Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=51a1e71c269f298fba18b620c68a0b1b15d236e9'/>
<id>urn:sha1:51a1e71c269f298fba18b620c68a0b1b15d236e9</id>
<content type='text'>
I guess you can pattern match using quote as a literal.
That's pretty cool.
</content>
</entry>
<entry>
<title>Fix a bug in matching record types.</title>
<updated>2022-07-22T19:00:46Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@posteo.net</email>
</author>
<published>2022-07-22T19:00:46Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=9f8ae9d1de7988299fccb9a6e2673bf147c6d9eb'/>
<id>urn:sha1:9f8ae9d1de7988299fccb9a6e2673bf147c6d9eb</id>
<content type='text'>
Running the record matcher has a side-effect (raising *no-match*), so we
call it ahead of time to ensure a consistent order of evaluation.
</content>
</entry>
<entry>
<title>Perform argument conversion.</title>
<updated>2022-07-21T03:08:14Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@google.com</email>
</author>
<published>2022-07-20T22:39:23Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=e615308b928585013461482f879f536527c5acc2'/>
<id>urn:sha1:e615308b928585013461482f879f536527c5acc2</id>
<content type='text'>
The point of argument conversion is to validate on each function call
that the right number of arguments were passed, and to ensure that no
function has more than 1 argument. This second condition makes CPS
slightly simpler, and ensures that the arguments will all fit in locals.

We take the strategy of allocating a vector for each function call.
Ideally we would optimize away most of these allocations, but for now I
just want it to work.
</content>
</entry>
<entry>
<title>Remove redundant parentheses in the match macro.</title>
<updated>2022-07-13T04:44:41Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@google.com</email>
</author>
<published>2022-07-13T04:44:41Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=77a47304368cd716c05507ce9cebbbab3a2b965a'/>
<id>urn:sha1:77a47304368cd716c05507ce9cebbbab3a2b965a</id>
<content type='text'>
I'm marginally reducing verbosity with this change,
without sacrificing readability.
</content>
</entry>
<entry>
<title>Add a diff library.</title>
<updated>2022-07-03T21:37:10Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@posteo.net</email>
</author>
<published>2022-07-03T21:37:10Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=bcb098e8eb18637b6999789585a38ff9168de9d5'/>
<id>urn:sha1:bcb098e8eb18637b6999789585a38ff9168de9d5</id>
<content type='text'>
I was hesitant to add a diff library, but it was surprisingly easy. A
straightforward application of dynamic programming.
</content>
</entry>
<entry>
<title>Add pattern matching for record types.</title>
<updated>2022-06-30T04:52:30Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@posteo.net</email>
</author>
<published>2022-06-30T04:52:30Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=804a2fe3c90c06a22a1eed5ea50d667ff3e7b08c'/>
<id>urn:sha1:804a2fe3c90c06a22a1eed5ea50d667ff3e7b08c</id>
<content type='text'>
I like scheme because it's possible to add any convenient language
feature I can think of.
</content>
</entry>
<entry>
<title>Write a first draft macro expander.</title>
<updated>2022-01-15T05:06:26Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@posteo.net</email>
</author>
<published>2022-01-15T05:06:26Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=a968e8595b999d5c0a43c59de69bcb4f34e205c1'/>
<id>urn:sha1:a968e8595b999d5c0a43c59de69bcb4f34e205c1</id>
<content type='text'>
Committing it because it compiles. I have to write tests and debug
it still.
</content>
</entry>
<entry>
<title>Rewrite match to use exceptions.</title>
<updated>2022-01-13T23:49:18Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@posteo.net</email>
</author>
<published>2022-01-13T23:49:18Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=85a1d8d269383cc061d54cf4e1af0254a6c6ccb7'/>
<id>urn:sha1:85a1d8d269383cc061d54cf4e1af0254a6c6ccb7</id>
<content type='text'>
This makes the control flow more clear, and eliminates the need to scan
the pattern twice. It also makes it easier to add new forms by
consolidating the pattern logic in one procedure.
</content>
</entry>
<entry>
<title>Move scheme compiler into a separate directory.</title>
<updated>2022-01-12T06:01:23Z</updated>
<author>
<name>Rose Hogenson</name>
<email>rhogenson@posteo.net</email>
</author>
<published>2022-01-12T06:01:23Z</published>
<link rel='alternate' type='text/html' href='https://code.roseh.moe/chromatopelma/commit/?id=68986fe0410584c6934c835bb0ee784655f5f8c5'/>
<id>urn:sha1:68986fe0410584c6934c835bb0ee784655f5f8c5</id>
<content type='text'>
</content>
</entry>
</feed>
