Skip to content

Instantly share code, notes, and snippets.

raiph / .md
Last active Aug 7, 2020
2009/2013 papers: The Power of Interoperability: Why Objects Are Inevitable
View .md

Let us first consider the theory of how modular extension facilitates software evolution. The need for a software system to support new, unanticipated implementations of an abstraction was discussed in Parnas’s seminal paper on the criteria to be used in decomposing systems into modules. Parnas’s argument has become a pillar of software design: nearly all software must change over time, so a software system should be decomposed in a way that hides (i.e. isolates) decisions that are likely to change. The implication is that when change comes, it can be accommodated by providin a new implementation of the abstraction captured by the module’s interface. So extension is important for facilitating software evolution. However, is the interoperability of extensions necessary in practice, beyond examples such as widgets?

What if that notion is applied to a PL -- or, more to the point, a metalanguage?

raiph / .md
Last active Nov 25, 2021
Raku's "core"
View .md

Then mathematical neatness became a goal and led to pruning some features from the core of the language. ... Another way to show that LISP was neater than Turing machines was to write a universal LISP function and show that it is briefer and more comprehensible than the description of a universal Turing machine.

— John McCarthy, History of Lisp

TL;DR Many presume the mathematical theory of functions is the sole right foundation for programming theory and languages. In contrast, Raku adopts the mathematical theory of actors (cf Scala's Akka) as its core primitive for the most demanding scenario (heterogeneous/concurrent/distributed computing), with actor=object for less demanding settings. This article drills down to that core: a metamodel ("model of a model") of a model of computation ("h

View gist:ad0c6019a285805d3131f1ebf7c64717
What I'm starting with
Toshiba Satellite Pro C50-A-1E0
455GB drive
DVD RW drive
Celeron 1005M @ 1.9GHz, 64 bit
raiph /
Last active Jan 22, 2021
trans DWEM

What this is

My documentation of P6's .trans routine for anyone who reads it.

It may be a step toward updating the official doc and/or cleaning up the relevant spec tests and/or functionality.

I have tried to be clear enough that a future me will be able to make sense of it, and hopefully anyone else who reads this.

It's supposedly exhaustive (definitely exhausting!).

raiph / gist:5c6ce5013ff4918eab1060472de4d891
Created Jan 19, 2017
One body shared by multiple signatures (Tentative proposal for 6.d)
View gist:5c6ce5013ff4918eab1060472de4d891
This is one of several gists I've written that relate to several distinct tentative proposals for 6.d that make sense both independently and together.
This gist discusses a long conjectured feature that would work nicely with the other proposals:
Others include:
* [Implicit/explicit mutation in 6.c]().
View gist:2714c5decbc9463dd095
grammar BBCode {
regex TOP { (<para> | <code>)* }
regex para { [\N+ [\n|$]]+ [\n|$] }
regex code { '[code]' .* '[/code]' <.ws> }
BBCode.parse: Q:to[END];
a := f()
View gist:11267503
ASCII: ( ) [ ] { }
Full width variant:( ) [ ] { }
White variants: ⦅ ⦆ 〚 〛 ⦃ ⦄
Common Western quotation: “ ” ‘ ’ ‹ › « »
Asian:「 」 〈 〉 《 》 【 】 〔 〕 ⦗ ⦘
Asian white variant:『 』 〖 〗 〘 〙
Half width variant: 「 」
Math: ⟦ ⟧ ⟨ ⟩ ⟪ ⟫ ⟮ ⟯ ⟬ ⟭
Decorative: ❛ ❜ ❝ ❞ ❨ ❩ ❪ ❫ ❴ ❵ ❬ ❭ ❮ ❯ ❰ ❱ ❲ ❳
Vertical: ⏜ ⏝ ⎴ ⎵ ⏞ ⏟ ⏠ ⏡
raiph / gist:5079034
Created Mar 4, 2013
Covering gap in #perl6 IRC log 3/2/2013 noon thru 3/3/2013 7am
View gist:5079034
[2013-03-02 07:00:30] -!- mberends [] has quit [Quit: Leaving]
[2013-03-02 07:04:57] <moritz> r: say (1, 2, 3).Array.[0] = 42
[2013-03-02 07:04:59] <p6eval> rakudo 40069f: OUTPUT«42␤»
[2013-03-02 07:06:43] <FROGGS> jnthn: I thought I pulled before that, sorry for the accusation :o)
[2013-03-02 07:07:51] -!- _ilbot [] has quit [Remote host closed the connection]
[2013-03-02 07:08:53] <jnthn> FROGGS: np :)
[2013-03-02 07:09:45] -!- kaare__ [] has joined #perl6
[2013-03-02 07:09:48] -!- moritz [] has quit [Remote host closed the connection]
[2013-03-02 07:12:43] -!- moritz [] has joined #perl6
[2013-03-02 07:13:36] -!- kivutar [] has quit [Quit: Ex-Chat]
raiph / gist:3734995
Created Sep 17, 2012
HTML showing odd cell coloring of Moritz's irclogger display
View gist:3734995
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
<html xmlns="" xml:lang="en">
<meta name="description" content="IRC LOG for channel #perl6" />
<link rel="stylesheet" type="text/css" href="/style.css" title="Irclog Stylesheet" />
<link rel="shortcut icon" href="/moose1.ico" type="image/x-icon" />
<link rel="canonical"
href="/perl6/2012-09-17" />
raiph / gist:3732447
Created Sep 16, 2012
Feedback for Moritz about irclogger changes
View gist:3732447

What about “Communal logmarks”? To logmark a line that isn’t already logmarked, click it’s time field. From now till someone or something unhighlights it, that line will be highlighted for you. And for everyone else. It’s a communal logmark. Anyone (or anything) can click again to unhighlight.

Original gist below, with couple minor edits.

Feedback for Moritz about irclogger changes

Even if you do nothing else…

I am very happy you’ve done what you’ve done. I say the prognosis just sharply improved for #perl6 summaries, my carpal tunnel pain, and your irclogger software!