サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
中東情勢
sirocco.hatenadiary.org
PostScript TUTORIAL and COOKBOOKの51ページに星の形を描くプログラムがあります。文字列を表示する print とスタックを表示する pstack を使って動作する様子を追いかけてみます。 Chapter 6: MORE GRAPHICS (Saving the Graphics State) /starside { 72 0 lineto % 右へ72ポイント線を引くためのパスを追加 % 実際に線を引くのは stroke のとき % 塗りつぶすのにも同じパスを使っている。 currentpoint % 現在位置の座標をスタックに積む translate % ユーザ空間座標をスタックの位置に移動 -144 rotate } def % ユーザ空間座標を-144回転 /star %stack: x y { moveto % スタックの座標に移動 currentp
「HaskellでLispを書く日記」を写経しながら読んでみます。 import Text.ParserCombinators.Parsec import Debug.Trace data Sexp = Nil | Symbol String |Cons Sexp Sexp deriving Show Show、Read クラスのインスタンスも定義してありますがSexp型データの確認をするために省略して動作させてみます。 -- S式用パーサ:S式はアトムかリストのどちらか。 sexpParser :: Parser Sexp sexpParser = spaces >> ( do { string "("; listParser } <|> do { string "'"; a <- sexpParser; return (Cons (Symbol "quote")(Cons a Nil)
OverloadedStrings 言語拡張を使うとダブルクオートで囲んだ文字列を、Text、ByteString リテラルとして扱ってくれるようになります。あどけない話・Haskellライブラリ入門 (2011年版) {-# LANGUAGE OverloadedStrings #-} module Main where import qualified Data.Text as T import GHC.Exts( IsString(..) ) greet :: T.Text -> T.Text greet "hello" = "world" greet other = other greetTest :: T.Text greetTest = greet "hello" main = do print $ greet "hello" print $ greet "fool" > :m
HaskellでExcelを読み書きしてみました。 Haskell のソースコードは UTF8。UTF8 のソースはコンパイルすると内部コードUCS4に変換されます。Windows は表面はSJISですが、COM を呼ぶときにはBSTRに変換しています。 ソースに書かれた文字列を直接Excelに書き込む場合はUCS4からSJISに変換し、CSting に変換してCで書かれたライブラリを呼びます。 C で 書かれたライブラリでは文字列は BSTR に変換され COMを呼びます。COMとのデータのやりとりは Variant型 で行なわれます。 CString で確保したメモリはGCが行なわれませんので開放する必要があります。 Variant型というのはデータの種類を表すメンバ VARTYPE vt と大きな共用体で表現されていいます。 // C:\MinGW\include\oaidl.h t
検索していたら、きしだのはてな・おとうさん、ぼくにもYコンビネータがわかりましたよ! という記事にめぐり逢って面白かったので Scheme 写経してみました。 ラムダ関数の表記 ラムダ関数は λx.x のように表記します。 λx.x λx.x*2(λx.x*2)y という関数は xの部分をyでおきかえると (λx.x*2)y → y * 2 となります。これを簡約といいます。 ;; scheme (lambda(x) x) ;=> #<closure #f> ((lambda(x) x) 2) ;=> 2 # ruby lambda{|x| x} #=> #<Proc:0xb77e75a4@(irb):1> lambda{|x| x}.call(2) #=> 2 -- Haskell > (\x -> x) 2 -- => 2 > :t (\x -> x) -- => (\x -> x)
効率的なファイル操作、正規表現、ファイル名マッチング (2012/02/18 リンク切れ) 翻訳していただきありがとうございます。 (=~) の型はすごいことになっている。target を指定してtarget型の値を返す。 Prelude> :module +Text.Regex.Posix Prelude Text.Regex.Posix> :t (=~) (=~) :: (Text.Regex.Base.RegexLike.RegexMaker Regex CompOption ExecOption source, Text.Regex.Base.RegexLike.RegexContext Regex source1 target) => source1 -> source -> target Bool 型を指定するとBool 型を返す > "my left foot" =~ "fo
■ Haskell 再入門Haskell(前編)に unsafePerformIO を使って IO を外す例がありましたので写経してみました。 import System.IO.Unsafe configFileName = "config.txt" loadConfig :: IO (String,Integer) loadConfig = readFile configFileName >>= \dat -> let [server, portNumber] = lines dat in return (server, read portNumber) server :: String portNumber :: Integer (server,portNumber) = unsafePerformIO loadConfig main = do (s,p) <- loadConfig
Haskell は数値の型を合わせないと計算出来ません。それは他の言語も同じですが、 Haskell には型推論があるため、変換しようとする型を直接指定するのでなく、中間としてジェネリックな型を指定して、あとは Haskell におまかせするというようなイメージです。 (参考:Real World Haskell p153 表6-4 数値間の変換) また、コンパイラが勝手にキャストとするということはありません。 整数(Int、Integer)の型が違う場合は fromIntegral を使って Num にして型を合わせてから計算する。 fromIntegral は Integral型からNum型に変換する関数です。 ghci> (fromIntegral (2::Int)) + 3::Integer --> 5 ghci> :t fromIntegral fromIntegral :: (
Data.List.Splitを使うと簡単にCSVをリストに変換出来ます。 split パッケージをインストールします。 > cabal update Downloading the latest package list from hackage.haskell.org > cabal install split Resolving dependencies... Downloading split-0.1.2.3... (snip) Registering split-0.1.2.3... > :m + Data.List.Split -- CSV のファイルを読み込みます。 > f <- readFile "jyusho_mst.csv" -- 改行ごとにリストに取り込み、その先頭。 > (lines f) !! 0 --=> "0,hoge,\255,123-4567,0,0,00
C++ を Haskell から呼ぶのが大変だというのが分ったので、Ruby の win32ole.c を参考にC言語で Excel を操作する関数を書いてみました。 これらの関数を Haskell から呼べば HaskellでExcel を操作出来ます(^^)/ C++ ではシートから行・列を指定してCellsオブジェクトを取得しましたが、C で同じ方法だと取得に成功はするものの文字化け。 シートからRengeとセル名 "C2" を指定してDISPID_PROPERTYGET を指定して invoke 関数を呼びました。 DISPID_PROPERTYPUT のときは渡すパラメータが別に必要のようです。 VARIANT の配列を作って渡す方法が分らなくて泣きそうだった・・・。プログラマー's研究所/研究日誌 COMの呼び方に感謝です。 "Renge" "C2" を指定するのは win32
PostgreSQL から pg_dump した EUC_JP のファイルを UTF8 の PostgreSQL に読み込ませるとエラーになる。 ●文字コード表(EUC-JP) [12836/12836] - [技術資料] ぺんたん info http://pentan.info/doc/euc_list2.html F9F5 FAB1 EFA891 FA11 粼 﨑 FACB FAE5 E6A081 6801 胗 栁 FCE2 FBFC E9AB99 9AD9 郄 髙 FAF0 FB4D E6BFB5 6FF5 444926 茺 濵 F9A4 FA5F E98A88 9288 446378 硑 銈PostgreSQL は内部に文字変換テーブルを持っているが、各エンコード間で混乱している文字は登録されていないらしい。 ●
このページを最初にブックマークしてみませんか?
『sirocco の書いてもすぐに忘れるメモ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く