Skip to content

Instantly share code, notes, and snippets.

@nebuta
nebuta / category.hs
Created September 19, 2013 07:56
Example of Category instance?
{-# LANGUAGE OverloadedStrings, GADTs, NoImplicitPrelude #-}
import Data.Text (Text)
import qualified Data.Text as T
import qualified Data.Text.IO as T
import Control.Monad.Writer
import Prelude hiding ((.),id)
import Control.Category
@nebuta
nebuta / shiritori.hs
Created August 28, 2013 03:35
Naive implementation of shiritori
-- shiritori
import Control.Applicative ((<$>))
import Data.List (maximumBy)
import Data.Function (on)
import qualified Data.Map as M
import Debug.Trace
type Term = (Char,Char,String)
@nebuta
nebuta / hackage-timeline.hs
Last active December 21, 2015 16:18
Hackage repository info collection using Cabal package.
{-# LANGUAGE OverloadedStrings #-}
import Control.Applicative
import Control.Monad
import Data.Maybe
import Data.List
import System.Directory
import Distribution.PackageDescription.Parse
import Distribution.PackageDescription
import Distribution.Verbosity as Verbosity
@nebuta
nebuta / midi-test.html
Created August 22, 2013 07:00
MIDI.js demo application
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset="utf-8" />
<!-- midi.js package -->
<script src="./js/MIDI/AudioDetect.js" type="text/javascript"></script>
<script src="./js/MIDI/LoadPlugin.js" type="text/javascript"></script>
<script src="./js/MIDI/Plugin.js" type="text/javascript"></script>
<script src="./js/MIDI/Player.js" type="text/javascript"></script>
<script src="./js/Window/DOMLoader.XMLHttp.js" type="text/javascript"></script>
@nebuta
nebuta / halide-examples.cpp
Last active December 20, 2015 15:18
Halide simple examples of pointwise opreation, image IO, and stencil operation.
#include <Halide.h>
#include <cstdio>
using namespace Halide;
#include "image_io.h"
#include <sys/time.h>
double currentTime() {
timeval t;
gettimeofday(&t, NULL);
@nebuta
nebuta / halide-schedule.cpp
Created August 4, 2013 04:33
Halide simple example
// Modified from tutorials/lesson_02.cpp and test/vectorize.cpp
// On linux, you can compile and run it like so:
// g++ -I ../include -L ../bin -lHalide -lpthread -ldl -lpng blur.cpp
// LD_LIBRARY_PATH=../bin ./lesson_02
// On os x:
// g++ -I ../include -L ../bin -lHalide `libpng-config --cflags --ldflags` blur.cpp
// DYLD_LIBRARY_PATH=../bin ./lesson_02
@nebuta
nebuta / reify2-rws.hs
Last active December 20, 2015 12:09
Reification of AST using a RSW monad.
{-# LANGUAGE OverloadedStrings,GADTs,FlexibleInstances #-}
import Data.List (intercalate,foldl1)
import Data.Text (Text)
import qualified Data.Text as T
import qualified Data.Text.IO as T
import Data.Map (Map)
import qualified Data.Map as M
import Control.Monad.RWS
import Control.Monad.State.Class
@nebuta
nebuta / reify.hs
Created August 1, 2013 04:40
Example of Reification of AST.
{-# LANGUAGE OverloadedStrings,GADTs,FlexibleInstances #-}
import Data.List (intercalate)
import Data.Text (Text)
import qualified Data.Text as T
import qualified Data.Text.IO as T
type Ident = Text
-- 2D matrix
@nebuta
nebuta / ast-gadt.hs
Created July 27, 2013 21:24
Typed AST with GADT in Haskell
{-# LANGUAGE GADTs #-} -- You need GADTs pragma.
data Exp r where
Const :: (Show r) => r -> Exp r
Add :: (Num r) => Exp r -> Exp r -> Exp r
Subtract :: (Num r) => Exp r -> Exp r -> Exp r
Eq :: (Eq r) => Exp r -> Exp r -> Exp Bool
And :: Exp Bool -> Exp Bool -> Exp Bool
Or :: Exp Bool -> Exp Bool -> Exp Bool
@nebuta
nebuta / gadt-dsl.hs
Last active December 20, 2015 04:09
Prototype of typed EDSL in Haskell for Matlab code generation.
{-# LANGUAGE NoImplicitPrelude,OverloadedStrings,GADTs,MultiParamTypeClasses,FlexibleInstances #-}
-- GADTを使った型付きDSLのごく簡単なプロトタイプ。
-- 出力のロジックに、この記事のアイデア・実装を一部利用: http://d.hatena.ne.jp/keigoi/20111206/haskell_tagless_dsl
import BasicPrelude as B
import Prelude (Show(..))
import Control.Monad.Writer
import Control.Monad.State