Skip to content

Instantly share code, notes, and snippets.

@takoeight0821
takoeight0821 / Dog.hs
Last active August 29, 2015 14:15
ちょっとオブジェクト指向っぽいDSL
newDog name message
| message == "bark" = "Bowwow!"
| message == "hey " ++ name = name ++ " came at you."
| otherwise = "?"
dog = newDog "Pochi"
main = mapM_ print [dog "bark", dog "hey Pochi", dog "hey John", dog "run"]
{-
output:
@takoeight0821
takoeight0821 / map_func.c
Last active October 19, 2016 12:03
C言語で多相もどきとmap
#include <stdio.h>
#define map(TYPE, SOURCE, RESULT, FUNC)\
TYPE RESULT[sizeof(SOURCE) / sizeof(SOURCE[0])] = {0};\
for (int i = 0; i < (sizeof(SOURCE) / sizeof(SOURCE[0])); i++) {\
RESULT[i] = FUNC(SOURCE[i]);\
}
int square(int n) {
return n * n;
@takoeight0821
takoeight0821 / hello_cpp.go
Last active August 29, 2015 14:16
Cのプリプロセッサ on Go言語
package main
import (
"fmt"
"strconv"
)
#define map(TYPE_S, TYPE_F, SOURCE, FUNC)\
func (f func(TYPE_S) TYPE_F) []TYPE_F {\
r := make ([]TYPE_F, len(SOURCE));\
@takoeight0821
takoeight0821 / proc.hs
Created March 9, 2015 13:17
HaskellでもCPP
#define proc do
#define void(m)\
m :: IO ();\
m =
void(main) proc
a <- getLine
b <- getLine
putStrLn $ a ++ b
@takoeight0821
takoeight0821 / Main.java
Created March 17, 2015 09:45
Java で 数当てゲーム
import java.io.*;
public class Main {
static int small = 1;
static int big = 100;
private static int guessMyNumber() {
return (small + big) / 2;
}
@takoeight0821
takoeight0821 / janken.lisp
Created April 19, 2015 07:32
じゃんけん
;;; * (read-hand)
;;; > rock
;;; ROCK
;;; > very-dangerous-words
;;; hands: rock, paper, scissor
;;; >
(defun read-hand ()
(princ "> ")
(finish-output) ;SBCLの最適化によるIO順序の入れ替わりを防ぐ
(let ((p-hand (read)))
@takoeight0821
takoeight0821 / haskell.lisp
Created May 10, 2015 08:35
Haskell on S expr
(defclass (Eq a)
(as = (Func a a Bool))
(as /= (Func a a Bool))
(defmethod (= x y) (not (/= x y))
(defmethod (/= x y) (not (= x y)))))
(defdata TrafficLight ((Red) (Yellow) (Green)))
(definstance (Eq TrafficLight)
(defmethod (= Red Red) True)
@takoeight0821
takoeight0821 / guess_my_number.cpp
Created May 17, 2015 09:07
数当てさせゲーム
#include <iostream>
int small = 1;
int big = 100;
int guessMyNumber()
{
return (small + big) / 2;
}
@takoeight0821
takoeight0821 / Group.hs
Created June 5, 2015 10:12
群 in Haskell
import Data.Monoid
class Group g where
gidentity :: g
gop :: g -> g -> g
ginverse :: g -> g
instance Num a => Group (Sum a) where
gidentity = Sum 0
(Sum x) `gop` (Sum y) = Sum (x + y)
@takoeight0821
takoeight0821 / log.txt
Created June 14, 2015 11:51
build roswell log
➜ roswell git:(master) sh bootstrap
configure.ac:14: installing './compile'
configure.ac:10: installing './install-sh'
configure.ac:10: installing './missing'
src/Makefile.am:30: warning: CLEANFILES multiply defined in condition TRUE ...
src/Makefile.am:24: ... 'CLEANFILES' previously defined here
src/Makefile.am: installing './depcomp'
➜ roswell git:(master) ✗ ./configure
checking for a BSD-compatible install... /usr/bin/install -c