Skip to content

Instantly share code, notes, and snippets.

View arnauorriols's full-sized avatar

Arnau Orriols arnauorriols

View GitHub Profile

Pattern Matching

This is a strawman proposal for adding pattern matching to ECMAScript. Pattern matching is useful for matching a value to some structure in a similar way to destructuring. The primary difference between destructuring and pattern matching are the use cases involved - destructuring is useful for binding pieces out of larger structures whereas pattern matching is useful for mapping a value's structure to data or a set of behaviors. In practice this means that destructuring tends to allow many shapes of data and will do its best to bind something out of it, whereas pattern matching will tend to be more conservative.

Additionally, the power of pattern matching is increased substantially when values are allowed to participate in the pattern matching semantics as a matcher as well as a matchee. This proposal includes the notion of a pattern matching protocol - a symbol method that can be implemented by objects that enables developers to use those values in pattern matching. A common scenario w

@senko
senko / maybe.py
Last active May 2, 2024 18:35
A Pythonic implementation of the Maybe monad
# maybe.py - a Pythonic implementation of the Maybe monad
# Copyright (C) 2014. Senko Rasic <senko.rasic@goodcode.io>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
<<< "Assignment_4_Flight of the Moth" >>>;
// coded an ADSR alternative, no effect generators harmed
fun void instructions(){
"\n[x] 30 second composition\n" +
"[x] use functions ( at least 3 ) (i won't count this one)\n" +
"[x] use only midi note: 51, 53, 55, 56, 58, 60, 61, 63 (Eb Mixolydian scale)\n" +
"[x] You can use octaves above/below (either via frequency or midi note)\n" +
"[x] You must use the sound files from audio.zip\n" +
@Lukasa
Lukasa / cookie_test.py
Created September 28, 2013 15:12
An example of how to persist cookies in Requests.
@kesor
kesor / profile_middleware.py
Last active March 16, 2021 15:37
Django cProfile middleware
from django.core.exceptions import MiddlewareNotUsed
from django.conf import settings
import cProfile
import pstats
import marshal
from cStringIO import StringIO
class ProfileMiddleware(object):
def __init__(self):
if not settings.DEBUG: