Skip to content

Instantly share code, notes, and snippets.

@ishiy1993
ishiy1993 / glut-window.hs
Created November 22, 2015 00:33
HaskellでOpenGL(GLUT)を使う。ウィンドウの描画。
import Graphics.UI.GLUT
display :: DisplayCallback
display = do
clear [ColorBuffer]
flush
main :: IO ()
main = do
getArgsAndInitialize
@ishiy1993
ishiy1993 / harmonic.hs
Created October 24, 2015 02:54
Haskellで調和振動子をオイラー法、2次ルンゲ・クッタ法、4次ルンゲ・クッタ法で解き比べてみる
import Data.List (unfoldr)
-- dx/dt = f
f t x v = v
-- dv/dt = g
g t x v = - om2 * x
-- パラメータ
om = 2
om2 = om ** 2
-- 区間と初期値
@ishiy1993
ishiy1993 / rk4.hs
Created October 23, 2015 00:35
Haskellで4次ルンゲ・クッタ法
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
@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 / 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 / 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 / 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 / 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 / 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"