Skip to content

Instantly share code, notes, and snippets.

View pasberth's full-sized avatar

pasberth pasberth

View GitHub Profile
#include <stdio.h>
#include <string.h>
#include <math.h>
void int2str(long, char *);
int main(int argc, char *argv[])
{
long i = 12345;
char str[] = "00000\0";
@pasberth
pasberth / monad.scm
Last active October 3, 2020 21:48 — forked from anonymous/monad.scm
(define (then m k)
(bind m (lambda (_) k)))
(define (state-unit a)
(lambda (s) `(,a ,s)))
(define (state-bind m k)
(lambda (s)
(let* { [r (m s)]
[a (car r)]
@pasberth
pasberth / README.md
Created August 7, 2012 12:34
setjmp で遊ぶ
$ clang -v

clang version 3.0 (tags/RELEASE_30/final)
Target: i386-pc-linux-gnu
Thread model: posix

$ clang lambda_macro.c
$ ./a.out

lambda defined.

@pasberth
pasberth / sphinx-pygments.md
Created October 8, 2013 17:28
Sphinx と Pygments を使って独自のハイライティングをする

Sphinx と Pygments を使って独自のハイライティングをする

Sphinx はドキュメントを作成するツールで, Pygments は Sphinx 内部で使われているシンタックスハイライタです.

Pygments を使用して独自のハイライティングをする方法は, チュートリアルあるいはソースコードを読むのがいちばん手っ取り 早いでしょう. http://pygments.org/docs/lexerdevelopment/ とか, https://bitbucket.org/birkenfeld/pygments-main/src/0442d3cf660124048efde3c0d72ff79ea0355040/pygments/lexers?at=default などを読めば,レクサをつくってシンタックスハイライタをつくる方法が

@pasberth
pasberth / easy_regexp.rb
Created December 10, 2011 15:57
Rubyだったらこんなに楽に正規表現を書けるよ!!
# -*- coding: utf-8 -*-
# Rubyだったら正規表現はすごい簡単だよ!!!
# 他の言語ではいくつかパターンがありますが、自分はRubyほど楽に正規表現を利用できる言語を知りません。
msg = "まなさん大好き"
# Ruby では正規表現リテラルがあります。
# // のリテラルはそれだけで正規表現のリテラルです
# かなりperl的なのです^q^
{-# LANGUAGE TemplateHaskell #-}
import Control.Lens
import Control.Monad.Trans
import Control.Monad.State
import Data.Maybe
data Instr = Access Int
| Closure Code
| Apply
# -*- coding: utf-8 -*-
# importas は Python で言う import MyClass as RenamedMyClass 的なことをできます
# importas Namespace::MyClass, :RenamedMyClass とします
def importas(from, to_name)
Kernel.const_set(to_name, from)
end
=begin
module Namespace
class File; end
@pasberth
pasberth / itert.py
Created August 6, 2012 11:51
python の itertools で遊ぶ
import itertools
# このへん参考: http://kk6.hateblo.jp/entry/20110521/1305984781
# zip_longest はもっとも長いイテレータに合わせて繰り返す
# 終わったイテレータには None が入る
# [('a', 1), ('b', 2), ('c', None), ('d', None), ('e', None), ('f', None)]
print([(char, n) for char, n in itertools.zip_longest("abcdef", range(1, 3))])
# [(1, 'a'), (2, 'b'), (None, 'c'), (None, 'd'), (None, 'e'), (None, 'f')]
@pasberth
pasberth / AuthorizeOntoTwitterWithConduit.hs
Created March 3, 2013 03:19
Conduit で Twitter に認証するサンプル
import Web.Authenticate.OAuth as OAuth
import Data.Conduit
import Network.HTTP.Conduit
import qualified Data.ByteString as BS
import System.IO(hFlush, stdout)
oauth :: OAuth.OAuth
oauth = OAuth.newOAuth
{ OAuth.oauthServerName = "twitter"
, OAuth.oauthRequestUri = "https://twitter.com/oauth/request_token"
@pasberth
pasberth / README.md
Created September 3, 2012 15:42
アセンブリで brainfuck 書いてみた

たぶん Mountain Lion でしか動きません。自分の環境でしかテストしてない

compile:

$ as -o brainfuck.o brainfuck.s && ld -o brainfuck -e main brainfuck.o

run:

$ ./brainfuck -e "+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+."