I hereby claim:
- I am talyian on github.
- I am talyian (https://keybase.io/talyian) on keybase.
- I have a public key ASDR2l3g4aL0kQBiQKSM6P7XXVJNmdC2lz5sYYqMog3DOwo
To claim this, I am signing this object:
| #r "System.Drawing" | |
| #r "OpenTK" | |
| open OpenTK | |
| open OpenTK.Graphics | |
| open OpenTK.Graphics.OpenGL4 | |
| let window = new GameWindow (400,400, | |
| GraphicsMode.Default, "", | |
| GameWindowFlags.Default, | |
| DisplayDevice.Default, |
I hereby claim:
To claim this, I am signing this object:
| Breve was designed as a backwards-compatible Blitz replacement that does safe context-aware sanitization. | |
| The current architecture uses Blitz's parser frontend + Latte as a context-aware backend to achieve this goal. This was because I figured writing a context-aware HTML+macro parser was harder than re-implementing Blitz's logic flows (blocks, variable lookups, partial templates, etc.) in Latte. | |
| As it turns out, reimplementing logic is a difficult problem. An alternate solution would be to write our own Blitz-compatible frontend that just adds context-aware output and delegates to Blitz for the logic implementation. This is a Proof of concept that shows it isn't that bad in a language that makes writing parsers easy. |
| EVAL=(lambda F,B,V,P,T:lambda e:F(T(e),F,P,B(B,V))[0])( | |
| lambda t,f,p,b: [p(p,t,(lambda x:b(('+','-'),b(('*','/'),x))))], | |
| lambda b,e: lambda ops,t,i=0: t if i >= len(t) else b(b,e)(ops,(t.__setslice__(i-1,i+2,[e(t[i],t[i-1],t[i+1])]) or t),i) if t[i] in ops else b(b,e)(ops,t,i+1), | |
| lambda o,x,y: {'+':lambda a,b:a+b, '-':lambda a,b:a-b, '*':lambda a,b:a*b, '/':lambda a,b:a/b}[o](float(x), float(y)), | |
| lambda p, t, f: f((lambda s,e:t.__setslice__(s,e+1,[p(p,t[s+1:e], f)]) or t)(t.index('('),len(t)-1-t[::-1].index(')')) if '(' in t else t)[0], | |
| lambda e: [x for x in __import__('re').split('(\\d+|.)', e.replace(' ', '')) if x], | |
| ) | |
| print EVAL("3 - 5 - 4 - 3"); | |
| print EVAL("3 * 5 + 4 / 3"); | |
| print EVAL("3 * (5 + 4) / 2"); |
| // The Computer Language Benchmarks Game | |
| // http://benchmarksgame.alioth.debian.org/ | |
| // | |
| // contributed by Reed Adams | |
| // *reset* | |
| open System | |
| type Node = |
| <style>body { background: black; } #cv { display:block; margin:auto; }</style> | |
| <canvas id='cv' width='800' height='800'></canvas> | |
| <script id=frag type='x-shader/fragment'> | |
| precision highp float; | |
| varying vec2 _pos; | |
| void main() { | |
| vec2 c = _pos * 1.5 - vec2(0.7, 0), z; | |
| for(int i = 0; i < 64; i++) { | |
| z = vec2(z.x * z.x - z.y * z.y, 2.0 * z.x * z.y) + c; | |
| gl_FragColor = vec4(vec3((float(i) - log(log(length(z)))) / 64.0), 1); |
| #include <ESP8266WiFi.h> | |
| const int BUZZER_INPUT_IO = 5; | |
| const int DOOR_OUTPUT_IO = 4; | |
| const int LED_IO = 0; | |
| enum { STARTING, READY, NOTIFYING, OPENING }; | |
| void setup() { | |
| Serial.begin(115200); |
| #nowarn "9" | |
| open System | |
| open System.Runtime.InteropServices | |
| [<StructLayout(LayoutKind.Sequential)>] | |
| type DEVMODEInfo = struct | |
| [<MarshalAs(UnmanagedType.ByValTStr, SizeConst=32)>] | |
| [<DefaultValue>] val mutable dmDeviceName : string | |
| [<DefaultValue>] val mutable dmSpecVersion: int16; | |
| [<DefaultValue>] val mutable dmDriverVersion: int16; |
| Advent of Code 2017 Solutions |
| jimmy@4f9659dd76f5:~$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF | |
| Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /tmp/tmp.I6Cq8DlByE --trustdb-name /etc/apt//trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-jessie-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-jessie-security-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-jessie-stable.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-squeeze-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-squeeze-stable.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-wheezy-automatic.gpg --keyring /etc/apt/trusted.gpg.d//debian-archive-wheezy-stable.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF | |
| gpg: requesting key D3D831EF from hkp server keyserver.ubuntu.com | |
| gpg: /etc/apt//trustd |