Jason (jcreed) wrote,

Trying to understand this tech report on Arrowlets that I saw a poster about at ICFP. I wish they had given their code in a functional language first and then shown how it came out in javascript. I only really see how useful types are for understanding code when I don't have them!

The arrow they're using in figure 5 seems to be (written infix as A)

α A β = ∀ γ δ . α * γ * (β * γ → δ) → δ

γ being the type of "progress arrows".

Injection of ordinary functions α → β is pretty much determined by the type:

inj (f : α → β) : α A β = λ (x, p, k) . k (f(x), p)

>>> is also pretty straightforward:

(f : α A β) >>> (g : β A γ) : α A γ = λ (x, p, k) . f (x, p, λ (y, q) . g (y, q, k))

I'm having difficulty understanding what "progress arrows" are or how they function. Already arrows depart from the slightly nicer mathematical world of monads, and this paper seems to add yet more behavior without any intuition or framework for it to exist in.
Tags: programming

  • (no subject)

    Some further progress cleaning up the https://xkcd.com/1360/ -esque augean stables that is my hard drive. Tomato chicken I made a couple days ago…

  • (no subject)

    Did some personal archaeology. Helped a little with laundry. Threw some chicken, onions, tomato, stock, peppers in the slow cooker and hopefully…

  • (no subject)

    Dinner with akiva and dannel at nuevo portal in carroll gardens. Ate a pile of chicken stew and rice and beans and maduros, good times. I do miss…

  • Post a new comment


    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded