• R/O
  • HTTP
  • SSH

List of commits

No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-cqtcocoa誰得pythonphprubygameguibathyscaphec翻訳計画中(planning stage)omegatframeworktwittertestdomvb.netdirectxbtronarduinopreviewerゲームエンジン

A categorical programming language

Rev. Time Author
23bcde0 master 2023-02-02 14:41:01 Corbin

Debug FP multiplication somewhat.

For some reason, ground inputs are not giving a ground output. This
might be an issue with the structure of eval°, but I'm not seeing how.

ec5a068 2023-02-02 13:32:51 Corbin

Finish implementing FP.

Does it work? Kind of! We can evaluate f-add and f-mul at 0.0, for
example. We can't print either in general, though.

At this point, it's down to individual missing cases. I personally think
that we'll have fewer special cases overall, but I think that at least
fp-overflow° will need to change since we don't represent infinity with
a maximum exponent.

65b06ab 2023-01-30 16:33:19 Corbin

Clean up imports, fix FP unifications.

FP values are still off by a bit, but this seems to work for f-lt and
f-sign, at least.

6209f4c 2023-01-30 15:50:21 Corbin

More FP.

Strangely, these relations don't want to run forward *or* backward. I'm
starting to think that I've done something wrong with sample-elements,
or maybe build-fp.

bacf8c1 2023-01-30 15:03:37 Corbin

Really start implementing FP.

1.0 becomes 4.0, which is wrong. Also f-sign doesn't evaluate, although
I can compute its image. I suspect that I'll need to go back to the
paper and really focus on implementing each case carefully.

dee936e 2023-01-30 12:54:38 Corbin

Make jelly acceptance jelly-specific.

455bde1 2023-01-30 12:08:19 Corbin

Factor eval° more; make n-pred-maybe reversible.

I'm starting to notice some general patterns about reversibility. I'm
not sure whether I fully understand what's going on, though.

b5d326f 2023-01-30 11:08:39 Corbin

Implement sums; start implementing floats.

c8cc966 2023-01-29 14:08:36 Corbin

Implement relational currying.

I was worried about this, but it turns out to be pretty simple. It
doesn't really want to run backwards, which is fair. It also doesn't
want to run forwards, unless the input is ground. This might be a more
fundamental problem, and we might need to have a curry° to make a more
tractable search.

0f322ce 2023-01-28 14:30:24 Corbin

Search backwards through eval° and cammy°.

I figured it out for eval°, but I do not at all understand why cammy° is
improved by this. Nonetheless, I was able to replace cammy-synth° and
the entire pile of hacks. As a bonus, previous tests which timed out are
now successfully finding valid expressions; djinn is cleverer!

9e2117f 2023-01-25 12:16:19 Corbin

Use a faster sorting routine.

SRFI-132 replaces SRFI-1's quadratic-time approach with a good old
O(n lg n) approach.

e2e6c66 2023-01-25 10:34:03 Corbin

Delete Honey.

Cool idea, no users, no use cases, more complex than just writing a
better REPL. Maybe we can do this later in the future, but for now, I
want to focus on sharing and merging JSON hives.

1793513 2023-01-25 07:28:58 Corbin

Add a djinn to the new REPL.

So much easier!

905bc92 2023-01-25 06:46:24 Corbin

Genuine computation of images and fibers.

Some seemingly-simple functions like (comp succ succ) do not run
backwards very well, and I don't understand why. Also, empty fibers over
2 are decidable, but over N they appear to diverge; I can guess why, but
it's frustrating to see.

0f8f6b6 2023-01-25 02:01:07 Corbin

Evaluate images and preimages directly.

I've gotta figure out how to extract the results decently, but this is
amazing in general. The one thing I don't like is that 1 is in the image
of (comp succ succ), which suggests that succ° is broken somehow.

5f1392f 2023-01-24 14:02:52 Corbin

First swing at computing the image of functions.

Works for zero but not succ. Groundness issues.

5a15826 2023-01-24 12:39:02 Corbin

Print out elements and time taken.

490378c 2023-01-24 09:45:20 Corbin

Format types nicely.

73db59f 2023-01-24 08:47:52 Corbin

Fuck it. Scheme REPL.

6a93a4a 2023-01-24 01:07:16 Corbin

It's all just trash, isn't it?

bc101de 2023-01-17 06:33:40 Corbin

Tab-complete templates too, not just dippers.

d338820 2023-01-14 09:06:27 Corbin

Optimize dissolved expressions, always.

Similar to the old logic, but now that I have a REPL again, I can
quickly iterate.

cd87073 2023-01-13 17:49:17 Corbin

Get new REPL to extract complete terms.

We're gonna hack a bit on new REPL, I guess.

a28b1d9 2023-01-11 02:43:11 Corbin

Factor out some useful relations.

I'm likely going to rewrite all the WASM compiler stuff, but I want to
save the useful stuff so that I don't have to write it again.

It's pretty cool that macros can be modularized. TIL.

edc8a88 2023-01-11 00:00:49 Corbin

Try putting together all of the port stuff.

I think I need to rethink this. It is a tangled nest. Some
supposedly-easy small fragments diverge, and I cannot tell why.

3c16c3b 2023-01-10 09:15:42 Corbin

Use a macro to simplify some append°.

This is a 40% efficient abstraction (5 lines added, 2 lines removed); it
is not worthwhile on its own. It might be more useful in a few minutes,

ac80355 2023-01-09 11:00:44 Corbin

Reach a point of miscompilation.

I think I need to break this compilation action into two pieces. First,
I should convert to ANF or SSA; then, compilation to WASM should be much
easier. This whole ports-and-locals business is not easy to get right.

63aeaec 2023-01-06 09:07:19 Corbin

Encode pairs on the WASM stack.

I realize that implementing (pair f g) properly will require some extra
stack-saving work. Really, we should still have "stack ops", but now the
property is whether or not the stack is saved; our "spilless ops" would
compose without using any locals.

I know that we could spill after every op, and let an optimizer clean it
up, but what if the optimizer can't figure it out? I have been told many
times that my codegen output is bulky, and I think I can get this case
correct on my own.

0c85363 2023-01-05 14:36:09 Corbin

Figure out a viable encoding for ports.

Something about this is cognitively challenging. But I think I've
figured it out well enough to start porting the rest of the compiler.

After this, only curries will be left to figure out, and I've got a
couple different defunctionalization approaches to try.

b8a799e 2023-01-04 15:36:05 Corbin

Try a new approach to compiling to WASM.

This is based on a graph-and-ports architecture, as used in Elliott's
"Compiling to Categories" and almost certainly elsewhere.