Skip to content

Instantly share code, notes, and snippets.

@nebuta
nebuta / ast-no-gadt.hs
Created July 27, 2013 21:17
Haskell AST basic example
data Exp r = Const r | Add (Exp r) (Exp r) | Subtract (Exp r) (Exp r)
eval :: (Num r) => Exp r -> r
eval (Const v) = v
eval (Add e1 e2) = (eval e1) + (eval e2)
eval (Subtract e1 e2) = (eval e1) - (eval e2)
reify :: (Show r) => Exp r -> String
reify (Const v) = show v
reify (Add e1 e2) = concat ["(",reify e1,"+",reify e2,")"]
@nebuta
nebuta / haskell_advent_2012_26.md
Last active July 31, 2022 17:32
HaskellでWebスクレイピング - Haskell Advent Calendar 2012

HaskellでWebスクレイピング

この記事はHaskell Advent Calendar 2012の26日目の記事です。Haskell Advent Calendar初参加です。コメントなどお待ちしております。

前提知識 - Haskellでの文字列処理

HaskellではString([Char]の別名)が文字列の基本型で、これはリストであるためにパターンマッチ・再帰やPreludeやData.Listにあるリスト用の関数を使って処理ができるという利点があります。ただし、実用上はパフォーマンスが低いため、TextByteStringが代わりに用いられます。Textはいわゆるユニコード文字列、ByteStringはバイト列という区別です。この使い分けに関してはちょうどAdvent Calendarの@brain_appleさんのこの記事で解説されました。StackOverflowでの質問も参考になります。

HaskellでのHTMLパーシング用ライブラリの概観

Hackageを見ると、

@nebuta
nebuta / js-graph.hs
Last active July 9, 2020 17:06
Haskell to D3.js binding simple prototype
{-# LANGUAGE OverloadedStrings, GADTs, NoImplicitPrelude, ExistentialQuantification, FlexibleInstances #-}
module JSGraph where
import Data.List
import Data.Text (Text)
import qualified Data.Text as T
import qualified Data.Text.IO as T
import Prelude hiding ((.),id)
We can make this file beautiful and searchable if this error is corrected: It looks like row 7 should actually have 52 columns, instead of 44. in line 6.
番号,設置形態,大学名,,平成30年度大学入学者選抜,,,,,,,,平成29年度大学入学者選抜,,,,,,,,平成28年度大学入学者選抜,,,,,,,,平成27年度大学入学者選抜,,,,,,,,平成26年度大学入学者選抜,,,,,,,,平成25年度大学入学者選抜,,,,,,,
,,,,受験者数,,,合格者数,,,合格率(合格者数/受験者数),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,男性,女性,計,男性,女性,計,男性,女性,男性,女性,計,男性,女性,計,男性,女性,男性,女性,計,男性,女性,計,男性,女性,男性,女性,計,男性,女性,計,男性,女性,男性,女性,計,男性,女性,計,男性,女性,男性,女性,計,男性,女性,計,男性,女性
1,国立,北海道大学,合計,254,77,331,87,17,104,34%,22%,259,71,330,80,22,102,31%,31%,266,105,371,78,25,103,29%,24%,222,68,290,82,20,102,37%,29%,254,76,330,83,19,102,33%,25%,242,89,331,75,28,103,31%,31%
1,国立,北海道大学,うち18歳以下,122,44,166,34,11,45,28%,25%,119,28,147,35,7,42,29%,25%,123,51,174,37,9,46,30%,18%,98,35,133,35,11,46,36%,31%,101,42,143,37,14,51,37%,33%,100,42,142,36,9,45,36%,21%
1,国立,北海道大学,うち19歳,73,18,91,41,5,46,56%,28%,74,20,94,34,13,47,46%,65%,58,27,85,24,11,35,41%,41%,52,14,66,26,7,33,50%,50%,61,14,75,21,2,23,34%,14%,59,30,89,22,14,36,37%,47%
1,国立,北海道大学,うち20歳,23,3,26,8,0,8,35%,0%,23,11,34,4,1,5,17%,9%,30,11,41,13,4,17,43%,36%,24,5,29,13,1,14,54%,20%,34,10,44,14,2,16,41%,20%
import csv
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import matplotlib
from matplotlib import rc
font = {'family':'IPAexGothic'}
rc('font', **font)
@nebuta
nebuta / reverse.purs
Last active January 9, 2018 16:53
PureScript string reverse test
-- Type PureScript code here and click 'Compile' ...
--
-- Or select an example from the list at the top right of the page
module Main where
foreign import reverse "function reverse(s) { return function() { return s.split('').reverse().join(''); }; }" :: String -> String
a :: String
a = reverse "Hello"
@nebuta
nebuta / d3-geo.html
Created January 20, 2014 06:16
D3.js TopoJSON drawing example (map of Japan)
<!DOCTYPE html>
<!--
Fetch file:
http://www.gsi.go.jp/kankyochiri/gm_jpn.html#gm_jpn_use
Shape data
To view data: Use QGIS software. Install matplotlib, FreeType library, etc in advance.
(Tutorial: http://www.osgeo.jp/wp-content/uploads/2010/11/qgis_hands_on_foss4g2010.pdf)
@nebuta
nebuta / copipe.cpp
Last active January 3, 2016 16:09
Is (´・_・`((´・_・`)´・_・`)) a copy-and-paste of (´・_・`)?
#include <vector>
#include <iostream>
using namespace std;
bool failed = false;
int pos = 0;
string s;
string seq = "ABCDCba";
@nebuta
nebuta / hlearn-advent-2013.md
Created December 16, 2013 02:24
Haskellの統計・機械学習ライブラリHLearn

HLearnについて

これはHaskell Advent Calendar 2013の16日目の記事です。突っ込み・コメントなど歓迎します。

HLearnは、代数的構造を利用した統計・機械学習ライブラリということで、型の表現力が豊かであるHaskellの面目躍如の分野と言えそうだ。代数的構造に着目することで、同じ代数的構造を持つデータはその詳細によらず共通の抽象化を使えるというメリットがある。

まだ実験レベルのライブラリでAPIが頻繁に変わり、機能も多くないが、コンセプトが面白そうだったのでどういうふうに使えるか見てみた。

特徴

@nebuta
nebuta / tree-test.hs
Last active December 29, 2015 07:29
Tree breadcrumb interconversion test
{-# LANGUAGE FlexibleInstances #-}
import Data.Tree
import Test.QuickCheck
import Control.Applicative
import Data.List
import Data.Function
import Control.Monad
import Data.Maybe