Skip to content

Instantly share code, notes, and snippets.

module Main where
true :: a -> b -> a
true x _ = x
false :: a -> b -> b
false _ x = x
iF :: (a -> a -> a) -> a -> a -> a
iF b x y = b x y
module Main where
import Control.Monad
fizzbuzz :: Int -> String
fizzbuzz i
| i `mod` 15 == 0 = "FizzBuzz"
| i `mod` 3 == 0 = "Fizz"
| i `mod` 5 == 0 = "Buzz"
| otherwise = show i
@tokiwoousaka
tokiwoousaka / Cards.hs
Created May 21, 2015 14:48
2015/05/21断面
module Cards
( Suit(..)
, Card
, allCards
, cardSuit
, cardNumber
, cardStrength
) where
data Suit = Hearts | Diamonds | Clubs | Spades
@tokiwoousaka
tokiwoousaka / gist:69165be983834d427416
Last active August 29, 2015 14:19
THのlocation関数テスト
{-# LANGUAGE TemplateHaskell#-}
module Main where
import Language.Haskell.TH
$( do
location >>= runIO . (\loc -> do
putStrLn $ loc_filename loc -- THの書かれたファイル名
putStrLn $ loc_package loc -- パッケージ名
putStrLn $ loc_module loc -- モジュール名
print $ loc_start loc -- ソースコード上のマクロの開始位置(行, 列)
@tokiwoousaka
tokiwoousaka / gist:a4224880ab96f14c64b4
Created April 15, 2015 07:05
StoreによるLensの定義(Scalaと一緒?)
module Main where
import Prelude hiding ((.), id)
import Control.Category
import Control.Applicative
---------
-- Test
main :: IO ()
main = do
@tokiwoousaka
tokiwoousaka / gist:c88a4bfd32d3d75d202f
Created April 14, 2015 07:27
makePrismsの再実装はつらみしか無さそうなので、実際のLensで動きだけ確認
{-# LANGUAGE TemplateHaskell #-}
module Main where
import Control.Lens
data Foo a b = Hoge a | Piyo b | Fuga String
deriving (Show, Read, Eq, Ord)
makePrisms ''Foo
-----
@tokiwoousaka
tokiwoousaka / gist:68c12696ee6fccd280c4
Last active August 29, 2015 14:19
型の関係を整理しつつLens/Prismの再実装中
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE LambdaCase #-}
module Main where
import Unsafe.Coerce
import Control.Applicative (Applicative(..), WrappedMonad(..))
import Control.Monad
import Control.Monad.Reader
@tokiwoousaka
tokiwoousaka / gist:b59ce5cdc01d6dd99ba8
Last active August 29, 2015 14:18
Prismの再実装中・・・色々整理しないと頭がパーン
{-# LANGUAGE RankNTypes #-}
module Main where
import Unsafe.Coerce
import Control.Applicative
import Control.Category (Category)
import Control.Lens
import Control.Monad.Identity
import Data.Either
import Data.Monoid
import Numeric.Natural
@tokiwoousaka
tokiwoousaka / gist:b1d8fe96137b3ae3a122
Last active August 29, 2015 14:17
objectiveを用いた継承
{-# LANGUAGE GADTs #-}
module Main where
import Control.Object
import Control.Monad.Operational
import Control.Monad.Trans.State.Strict
import Control.Monad.IO.Class
import Control.Monad
main :: IO ()
main = do
@tokiwoousaka
tokiwoousaka / gist:82a4c9ab5027af1e0264
Last active August 29, 2015 14:17
Haskellでオブジェクト指向の実験
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE GADTs #-}
module Main where
import Control.Applicative
import Control.Monad.Identity
import Control.Monad.State
import Control.Concurrent.MVar
import Control.Monad.Operational
--------