Skip to content

Instantly share code, notes, and snippets.

@ishiy1993
ishiy1993 / helloworld.hs
Created October 8, 2015 06:13
Haskellで"Hello World"
main = putStrLn "Hello World"
@ishiy1993
ishiy1993 / simple-server.hs
Last active October 9, 2015 12:30
HaskellでWebサーバー
{-# LANGUAGE OverloadedStrings #-}
import Data.ByteString.Char8 (unpack)
import Network.Wai
import Network.HTTP.Types (status200)
import Network.Wai.Handler.Warp (run)
application :: Application
application req respond = case rawPathInfo req of
"/" -> respond $ responseFile status200 [("Content-Type", "text/html")] "index.html" Nothing
p -> respond $ responseFile status200 [] p' Nothing
@ishiy1993
ishiy1993 / strings.hs
Created October 10, 2015 06:53
Haskellの色々な文字列型
{-# LANGUAGE OverloadedStrings #-}
import qualified Data.ByteString as SB
import qualified Data.ByteString.Char8 as SBC
import qualified Data.ByteString.Lazy as LB
import qualified Data.ByteString.Lazy.Char8 as LBC
import qualified Data.Text as ST
import qualified Data.Text.Encoding as STE
import qualified Data.Text.Lazy as LT
import qualified Data.Text.Lazy.Encoding as LTE
@ishiy1993
ishiy1993 / simple-client.hs
Created October 13, 2015 05:26
Haskellで簡単Webクライアント
{-# LANGUAGE OverloadedStrings #-}
import Text.XML.Cursor
import Text.HTML.DOM (parseLBS)
import Network.HTTP.Conduit
import qualified Data.Text as T
import qualified Data.Text.IO as T
main :: IO ()
main = do
doc <- parseLBS <$> simpleHttp "http://www.ishiy.xyz/archive.html"
@ishiy1993
ishiy1993 / twitter-get.hs
Last active October 14, 2015 05:46
Haskellで自分のツイートを取得する
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DeriveGeneric #-}
import Web.Authenticate.OAuth
import Data.Text (Text)
import qualified Data.Text.IO as T
import Data.Aeson
import GHC.Generics
import Network.HTTP.Conduit
myOAuth :: OAuth
@ishiy1993
ishiy1993 / twitter-post.hs
Created October 15, 2015 00:35
Haskellでツイート
{-# LANGUAGE OverloadedStrings #-}
import Web.Authenticate.OAuth
import Data.ByteString (ByteString)
import Data.Text.Encoding (encodeUtf8)
import Network.HTTP.Conduit
myOAuth :: OAuth
myOAuth = newOAuth { oauthServerName = "api.twitter.com"
, oauthConsumerKey = "Your Consumer Key"
, oauthConsumerSecret = "Your Consumer Secret"
@ishiy1993
ishiy1993 / integral.hs
Created October 20, 2015 06:13
Haskellで数値積分
import Data.List (foldl')
-- 長方形近似
integral :: Double -> Double -> Double -> (Double -> Double) -> Double
integral a b dx f = foldl' (+) 0 $ map ((dx *) . f) xs
where xs = [a + dx*x| x <- [0..(b-a)/dx]]
-- 台形近似
integral2 :: Double -> Double -> Double -> (Double -> Double) -> Double
integral2 a b dx f = foldl' (+) 0 $ map (\(y1,y2) -> dx * (y1 + y2) / 2) $ zip ys (tail ys)
@ishiy1993
ishiy1993 / montecarlo.hs
Created October 21, 2015 01:05
Haskellでモンテカルロ積分
import System.Random
import Data.List
main :: IO ()
main = do
xGen <- getStdGen
yGen <- newStdGen
let n = 100000
let xs = take n $ randomRs (0,1) xGen
ys = take n $ randomRs (0,1) yGen
@ishiy1993
ishiy1993 / euler.hs
Created October 22, 2015 06:55
Haskellでオイラー法
import Data.List (unfoldr)
-- dy/dx = f
f x y = - a * y
-- パラメータ
a = 1
-- 区間と初期値
x0 = 0
x1 = 5
y0 = 1
@ishiy1993
ishiy1993 / rk2.hs
Created October 23, 2015 00:32
Haskellで2次ルンゲ・クッタ法(改良オイラー法)
import Data.List (unfoldr)
-- dy/dx = f
f x y = - a * y
-- パラメータ
a = 1
-- 区間と初期値
x0 = 0
x1 = 5
y0 = 1