• R/O
  • HTTP
  • SSH


No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

A categorical programming language

Rev. 时间 作者
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.

2caa030 2023-01-03 17:41:10 Corbin

Stopping point for now with graph reduction.

My head hurts and it doesn't feel like anything's actually getting
computed. We're just building thunks.

a493d59 2023-01-03 09:20:01 Corbin

Really get hacking with graph reduction in RPython.

d6f135a 2023-01-02 15:12:49 Corbin

Try compiling to an application graph.

This is basically a graph-reduction compile target. I'm going to see how
fast this is in RPython, and then in ECMAScript, and finally in
WebAssembly. It doesn't have to outperform RPython, but it does need to
outperform the current PureScript interpreter.

ae7767f 2022-12-29 08:26:01 Corbin

Allow sym° to run in reverse.

This lets us apply it multiple times onto a single symbol.

dced8f9 2022-12-28 12:10:43 Corbin

Rewrite djinn core.

Now we pull apart types first, synthesizing expressions from the pieces.
The results are quite good; with only a few tactics, we are able to
synthesize all of the existing testcases, including the three that used
to fail.