Skip to content

Instantly share code, notes, and snippets.

-- 以下の関数を実装して下さい
map' :: (a -> b) -> [a] -> [b]
map'' :: (a -> b) -> [a] -> [b] -- ただし1行で!
mapM_' :: (Monad m) => (a -> m ()) -> [a] -> m ()
mapM' :: (Monad m) => (a -> m b) -> [a] -> m [b]
@cojna
cojna / sugoih11.hs
Created July 25, 2013 08:52
すごいHaskell読書会 in 大阪 #11 演習課題の @cojna の解答
import Data.Monoid
import Data.Ord (comparing)
import Control.Applicative
newtype Hom a m = Hom { ($$) :: a -> m }
instance Monoid m => Monoid (Hom a m) where
mempty = Hom (const mempty)
mappend (Hom f) (Hom g) = Hom $ mappend <$> f <*> g
-- mappend (Hom f) (Hom g) = Hom $ \x -> f x <> g x
@cojna
cojna / AplusB.hs
Created June 28, 2013 09:25
https://gist.github.com/cojna/5857876 の答え的なもの. main関数をたくさん書いているので,このファイルはコンパイルできません.
import Control.Applicative ((<$>), (<*>), liftA2)
import Control.Monad (forM, replicateM)
import Data.Function (on)
main = do
x <- getLine
y <- getLine
print $ read x + read y
main = do

A + B

2つの整数AとBが与えられます. A+Bを出力するプログラムを作って下さい. ただし,できるだけたくさん作って下さい.

制約

-10^9 < A, B < 10^9

main=interact(\x->show$sum[1|'@'<-x])