Skip to content

Instantly share code, notes, and snippets.

@zakky-dev
zakky-dev / methods.d
Created September 9, 2013 15:44
D言語で指定したクラスのメソッド名を文字列で全て取得するサンプル
class Class(T) {
private bool[string] methods;
this() {
initialize();
}
void initialize() {
foreach(member; __traits(derivedMembers, T)) {
if(__traits(isVirtualFunction, mixin("T." ~ member))) {
@zakky-dev
zakky-dev / mixin-template.d
Created December 22, 2013 10:08
template mixinのテスト
import std.stdio;
mixin template Foo() {
void show() {
this.member.writeln;
}
}
class Bar {
mixin Foo;
@zakky-dev
zakky-dev / udatest.d
Created December 31, 2013 19:06
UDAの利用テスト。
import std.stdio;
enum udaprop = "udaprop";
class UDATest {
@udaprop private int intProperty;
@udaprop private string stringProperty;
private float floatProperty;
}
@zakky-dev
zakky-dev / opopassign.d
Created January 28, 2014 14:41
opOpAssignで遊んでみる
import std.stdio;
class Test {
private string _value;
this(string value) {
this._value = value;
}
Test opOpAssign(string op)(Test delegate(string) test) if(op == ">>") {
@zakky-dev
zakky-dev / try-cast.d
Created January 28, 2014 15:44
キャストの有り無しで挙動が変わる
import std.stdio;
interface Functor(T) {
Functor!T fmap(Functor!T delegate(T) lam);
}
class TestFunctor(T) : Functor!T {
private T _value;
this(T value) {
@zakky-dev
zakky-dev / chapter8_165.hs
Created May 3, 2014 15:36
「すごいHaskell楽しく学ぼう!」第8章165ページのサンプルコードを弄くり回した結果。書籍の「let式を使う」という目的を完全無視し、ひたすら分割する方向へ進めてしまった末路。そして文字列のフォーマットについてごねごね考えた原因。
import qualified Data.Char as C
type FirstName = String
type LastName = String
flatten :: [[a]] -> [a]
flatten [] = []
flatten (x:xs) = x ++ flatten xs
toUpper :: String -> String
@zakky-dev
zakky-dev / todolist.hs
Created May 14, 2014 16:10
Haskell練習用TodoList. 覚えている範囲のスキルのみを使って作成. 実際にはもっと綺麗にできるはず.
import System.IO
import System.Directory
import qualified Data.Map as M
import Data.List.Split
-- リストのリストを結合し、一つのリストにする
flatten :: [[a]] -> [a]
flatten [] = []
flatten (x:xs) = x ++ flatten xs
import Control.Monad
nothingMaybe :: Maybe Int
nothingMaybe = do
a <- Just 4
Nothing
return a
@zakky-dev
zakky-dev / Calc.hs
Last active August 29, 2015 14:06
パーサ練習。ファンクタ則、アプリカティブ則、モナド則の検証はしていない。
module Calc where
import ToyParser
choiceChar :: Char -> Char -> Parser Char Char
choiceChar a b = char a </> char b
valueP :: Parser Char Int
valueP = num </> (char '(' +> exprP <+ char ')')
@zakky-dev
zakky-dev / expression.cs
Last active August 29, 2015 14:06
try-catch-finallyの式化やってみた
using System;
using System.Collections.Generic;
namespace Expression
{
public static class Expression
{
public static ETry<TResult> Try<TResult>(Func<TResult> tryBlock)
{
return new ETry<TResult>(tryBlock);