Skip to content

Instantly share code, notes, and snippets.

@sawaken
sawaken / type0.rb
Created August 22, 2015 16:34
Scheme Interpreter Essensentials
# run on irb as follows.
# $ irb -r './type0.rb'
# irb> e [:define, :f, [:lambda, [:v], ["+", :v, 1]]]
# irb> e [:f 1]
# => 2
# ...
module Type0
Environment = Struct.new(:parent, :hash)
Lambda = Struct.new(:env, :params, :exp)
@sawaken
sawaken / extern.md
Last active August 29, 2015 14:23
C's extern

#extern修飾子の意味

外部で定義される変数であることを宣言するための修飾子

ただし

extern修飾子を付けて変数aを宣言する => 変数aは外部定義される

は成り立つが、その逆

@sawaken
sawaken / test_tiny_frp.rb
Last active August 29, 2015 14:17
A library to do FRP in Ruby (no more used but working correctly.) Alternative library, Frypan is now released.
require 'test/unit'
require './tiny_frp.rb'
module TinyFRP
module UnitTest
module Util
def lift(&proc)
TinyFRP::Lift.new(&proc)
end
@sawaken
sawaken / HandlingByteStream.hs
Last active August 29, 2015 14:16
Attempt to handle byte-stream in Haskell.
import qualified Data.ByteString as B
import GHC.IO.Handle
import System.Process
import System.IO
type Packet = B.ByteString
pktsize = 188
main = do
@sawaken
sawaken / TryYamp2.hs
Last active December 18, 2017 18:22
Hello World of Yampa, Haskell's FRP library.
{-# LANGUAGE Arrows #-}
import qualified FRP.Yampa as Y
type Inp = (String, String)
type Out = String
main = do
rh <- Y.reactInit initIO act sf
loop rh
@sawaken
sawaken / object_literal.rb
Created December 23, 2014 15:57
Rubyでレコード型っぽいデータ型を作るテスト
class RecordInstance
attr_reader :klass, :members
def initialize(klass, hash)
unless klass.members.all?{|name, type| hash.has_key?(name) && hash[name].is_a?(type)}
raise "Instance initialization error!!"
end
@klass = klass
@members = klass.members.keys.inject({}){|acc, name| acc.merge(name => hash[name])}
end
@sawaken
sawaken / poj1027.cc
Created November 14, 2014 05:34
My answer-programs submitted to online-judge and got TLE.
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <cstring>
#include <utility>
using namespace std;
typedef vector<vector<char> > B;
typedef pair<int, int> P;
@sawaken
sawaken / input_gen.rb
Created November 14, 2014 05:31
Downloader for input-data of online-judge-problem (programming-contest)
#!/usr/bin/env ruby
# -*- mode: ruby -*-
require 'net/http'
require 'uri'
require 'nokogiri'
module AOJ
extend self
def get(id)
@sawaken
sawaken / Makefile
Created November 6, 2014 17:55
An easy functional-reactive-programming sample written in C.
object_files = \
frp_sample.o \
frp_sample_lib.o
.SUFFIXES : .c
frp_sample: $(object_files)
gcc -Wall -o frp_sample $(object_files)
@sawaken
sawaken / reactive_programming_sample.c
Last active August 29, 2015 14:08
One easy example of Reactive Programming.
#include <stdio.h>
#include <stdlib.h>
typedef struct ReactiveInt* ReactiveInt;
struct ReactiveInt
{
int n;
int (*operator)(int, int);
ReactiveInt left, right;