Skip to content

Instantly share code, notes, and snippets.

View halogenandtoast's full-sized avatar

Matthew Mongeau halogenandtoast

View GitHub Profile
@enobayram
enobayram / maybe.c
Created May 21, 2017 15:57
Maybe monad in C
#include <stdlib.h>
#include <stdio.h>
// return :: Monad m => a -> m a
typedef void * /* m a */ return_t(void * /* a */);
// type kleisli_arrow a b = a -> m b
typedef void * /* m b */ kleisli_arrow(void * /* a */);
// bind :: Monad m => m a -> (a -> m b) -> m b
anonymous
anonymous / gist:4591596
Created January 22, 2013 02:34
require 'llvm/core'
require 'llvm/execution_engine'
require 'llvm/transforms/scalar'
class Generator
attr_accessor :ptr
def build(code,name, mod)
require 'fiddle'
require 'minitest/autorun'
class RubyVM
class InstructionSequence
address = Fiddle::Handle::DEFAULT['rb_iseq_load']
func = Fiddle::Function.new(address, [Fiddle::TYPE_VOIDP] * 3, Fiddle::TYPE_VOIDP)
define_singleton_method(:load) do |data, parent = nil, opt = nil|
func.call(Fiddle.dlwrap(data), parent, opt).to_value