View golf.hs
main=getContents>>=print.length.filter('@'==)
View golf.hs
main = do
c <- getContents
print (length $ filter ('@' ==) c)
View golf.hs
main = do
contents <- getContents
print (sum $ map (length . (filter ('@' ==))) $ lines $ contents)
View foldm_writer.hs
-- Writerを返す2引数関数を用いたfoldMによる整数の畳込みを行うために、9より大きい数が表れた場合は9より小さい数が表れた場合とは異なるログを残すような関数を実装せよ
import Control.Monad.Writer
binSmallsWriter :: Int -> Int -> Writer [String] Int
binSmallsWriter acc x
| x > 9 = do
tell [show x ++ " too big, not added"]
return acc
| otherwise = do
View monadic.md

14章 便利なモナディック関数特集

モナディック関数

  • モナド値を操作したりモナド値を返したりする関数
  • ここではliftM, join, filterM, foldMを扱う

liftMと愉快な仲間たち

ファンクター、アプリカティブファンクター、モナドの関係

View either_bird.hs
import Control.Monad()
type Birds = Int
type Pole = (Birds, Birds)
landLeft :: Birds -> Pole -> Either String Pole
landLeft n (left, right)
| abs ((left + n) - right) < 4 = Right (left + n, right)
| otherwise = Left ("Last state: " ++ show (left + n, right))
View audioread_test.py
#!/usr/bin/env python
# vim:fileencoding=utf8
import numpy as np
import matplotlib.pyplot as plt
import audioread as ar
def pcm2float(short_ndary):
float_ndary = np.array(short_ndary, dtype=np.float64)
return np.where(float_ndary > 0.0, float_ndary / 32767.0, float_ndary / 32768.0)
View sugoih2-07-problem.hs
-- 問題 https://gist.github.com/fujiyan/483893d875ff7e350ef1
-- 他の方々の解答
-- https://gist.github.com/iseebi/8f3f7388313c1a6005f9
-- https://gist.github.com/fujiyan/5378cb1f0f82c98a3775
data Attack = Normal | Critical | Gira | Begirama deriving Show
data Warrior = Warrior {
attack :: Int
} deriving Show