Skip to content

Instantly share code, notes, and snippets.

@yashigani
yashigani / sudden.hs
Last active December 15, 2015 11:29
すごいH本読書会 #7 練習問題
import System.Environment (getArgs)
import Prelude hiding (head, tail)
import Data.Char (ord)
sudden :: String -> String
sudden s = unlines [head s, body s, tail s]
body :: String -> String
body s = "> 突然の" ++ s ++ " <"
@yashigani
yashigani / gist:5340466
Last active December 15, 2015 23:29
すごいH本読書会 #1 練習問題

以下の関数を定義しなさい

  • null
  • sum
  • product
  • elem
  • Pythonのスライス
    • ex) slice 2 5 [1..7] # => [3, 4, 5]
  • フィボナッチ数列のn番目の数を返す関数
  • FizzBuzzのn項目からm項目までを返す関数
@yashigani
yashigani / YSNetwork.h
Created July 13, 2013 01:57
A simple CFNetwork wrapper
#import <Foundation/Foundation.h>
@interface YSNetwork : NSObject
@property (readonly) NSURL *URL;
@property (strong, nonatomic) NSURLRequest *request;
@property (strong, nonatomic) NSString *userAgent;
@property (strong, nonatomic, readonly) NSData *responseData;
@property (strong, nonatomic, readonly) NSDictionary *responseHeader;
@property (strong, nonatomic) void (^completion)(NSDictionary *responseHeader, NSData *responseData);
@property (strong, nonatomic) void (^failure)(NSError *error);
@yashigani
yashigani / main.md
Last active December 21, 2015 06:39
すごいH本読書会 #12

13 モナドがいっぱい

おさらい

Functor

  • 文脈を持った値に関数を適用する

    • f a(a -> b)を適用したい
  • r -> aからr -> b

    fmap :: (Functor f) => (a -> b) -> f a -> f b
import System.Environment (getArgs)
main = do
(x:_) <- getArgs
mapM_ putStrLn $ createFizzBuzz $ read x
createFizzBuzz :: Int -> [String]
createFizzBuzz 0 = []
createFizzBuzz x = map fizzbuzz [1..x]
@yashigani
yashigani / bowling.hs
Last active December 26, 2015 06:29
bowling score calculater on Haskell
import System.Environment (getArgs)
import Data.Char (digitToInt)
spare = (==) '/'
strike = (==) 'X'
updateBonus r (b1, b2)
| spare r = (b2 + 1, 0)
| strike r = (b2 + 1, 1)
| otherwise = (b2, 0)
@yashigani
yashigani / Rakefile
Last active August 29, 2015 13:56
Create ipa and upload it to testflight.
SDK = 'iphoneos7.0'
PRODUCT_NAME = ''
CODE_SIGN_IDENTITY = ''
PROVISIONING_PROFILE_UUID = ''
TESTFLIGHT_API_TOKEN = ''
TESTFLIGHT_TEAM_TOKEN = ''
desc "Clean build dir"
@yashigani
yashigani / gist:9104274
Last active August 29, 2015 13:56
すごいH本読書会 in 大阪 2周目 #3 練習問題
{-
- 数nを受け取り,3の倍数か3のつく数字のときにアホになる
- リストを返す関数を再帰を使って書きなさい.
-
- ex)
- > ahoMaker 40
- ["1","2","AHO","4","5","AHO","7","8","AHO","10",
- "11","AHO","AHO","14","AHO","16","17","AHO","19","20",
- "AHO","22","AHO","AHO","25","26","AHO","28","29","AHO",
- "AHO","AHO","AHO","AHO","AHO","AHO","AHO","AHO","AHO",
//
// KVOSampleTests.m
// KVOSampleTests
//
// Created by taiki on 2014/02/25.
//
//
#import <XCTest/XCTest.h>
@yashigani
yashigani / brainfuck.hs
Created March 18, 2014 13:40
Brainfuck on Haskell(only Hello, world...)
helloworld = "+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+."
type Code = (String, String)
type Pointer = ([Int], [Int], [Int])
parse :: Code -> Pointer -> Pointer
parse ([], _) p = p
parse ('>':xs, bs) p = parse (xs, '>':bs) $ incrementP p
parse ('<':xs, bs) p = parse (xs, '<':bs) $ decrementP p
parse ('+':xs, bs) p = parse (xs, '+':bs) $ increment p