map関数の動作。

main = print $ map square [1, 2, 3] square :: Int -> Int square n = n * n 結果。 [1,4,9] map関数の定義はこんな感じ。 map :: (a -> b) -> [a] -> [b] map f [] = [] map f (x:xs) = f x : map f xs 始めの定義は空のリストにマッチし、空のリストを返…

コメントの書き方。

--コメント {- コメント -} --は行末まで。 {--}は囲まれている範囲。

concatMap関数。

concat関数とmap関数を一つにまとめた関数。 main = print $ concatMap concatMapTest [1, 2, 3] concatMapTest :: Int -> [Int] concatMapTest n = [n * n] 結果。 [1,4,9]concat関数とmap関数をまとめているということは、 main = print $ concat $ map co…

replicate関数。

第2引数の値を第1引数で指定された数分だけ含むリストを返す。 main = do putStrLn $ replicate 5 'a' print $ replicate 5 1 print $ replicate 0 'a' print $ replicate (-1) 'a' 結果。 aaaaa [1,1,1,1,1] "" ""

concat関数。

リストの要素を連結しリストを返す。 concat ["a", "b", "c"] concat [[1,2], [3], [4,5,6]] concat [[[1,2,3]], [[4]]] それぞれの結果。 "abc" [1,2,3,4,5,6] [[1,2,3],[4]] リストは1つしか減らない点に注意。 一重のリストに対して適用すると concat [1,…

パターンマッチ。

main = putStrLn $ patternTest 2 patternTest :: Int -> String patternTest 1 = "one" patternTest n = "other" 結果。 other 値のパターンによって実行される関数が変化する。 patternTest :: Int -> String patternTest n = "other" patternTest 1 = "on…

高階関数。

高階関数、英語だとhigher order fuction。またよくわからない用語が出てきた。 本にあるサンプルを書いて実行してみる。 main = print $ map square [2, 3, 4] square :: Int -> Int square n = n * n 結果。 [4, 9, 16] map関数の定義は、 map :: (a -> b)…

if文。

標準入力にタブが含まれていたら@に書き換えて出力。本にあるサンプル。 main = do cs <- getContents putStr $ expand cs expand :: String -> String expand cs = map translate cs translate :: Char -> Char translate c = if c == '\t' then '@' else c…

型を宣言する。

Haskellは関数の引数、戻り値の型を明示的にしなくても、型推論という機能のため動作するけど、明示的にすることもできる。 lastNList :: Int -> String -> String lastNList n cs = unlines $ takeList n $ lines cs 書き方は、 関数名 :: 第1引数の型 第2…

標準入力の最初の10行を出力する。

main = do cs <- getContents putStr $ firstNLines 10 cs firstNLines n cs = unlines $ take n $ lines cs 始めての関数定義。firstNLines。 自分で関数を定義するには、 関数名 引数1 引数2… = 実際の処理 とする。 ここでは標準入力から得た文字列csをリ…

標準入力の終わりから10行を出力する。

main = do cs <- getContents putStr $ lastNLines 10 cs lastNLines n cs = unlines $ takeNList n $ lines cs takeNList n ss = reverse $ take n $ reverse ss reverse関数はリストの要素を逆順にする。とりあえずの関数いろいろメモ。 関数名 機能 lines…

WindowsにHaskellの処理系をインストール。

ここからインストーラをダウンロードして実行、環境変数PATHにコンパイラなどがインストールされたディレクトリを追加(現バージョンはC:\ghc\ghc-6.6\bin) 使い方はid:t-imaizumi:20060927:1159361266と同じ。

標準入力の行数を数える。

Haskellの勉強を再開。以前、勉強していたところをまったく覚えていない。ここに記録しておいてよかった。 main = do cs <- getContents print $ length $ lines cs lines関数が文字列を行単位でリストに分割し、length関数はリストの要素数を返す。 $は式を…

screenのよく使うコマンドメモ。

すぐに忘れるのでこちらを参考にメモメモ。 キー 機能 c 新しいウィンドウを作成 n 次のウィンドウへ移動 p 前のウィンドウへ移動 0〜9 指定した番号のウィンドウへ移動 [ コピーモードに移行 A ウィンドウタイトルを変更 コマンド文字は~/.screenrsに escap…

Railsレシピ。

目次買い。Railsレシピ作者: Chad Fowler,長瀬嘉秀,永田渉,株式会社テクノロジックアート出版社/メーカー: オライリー・ジャパン発売日: 2006/12/19メディア: 大型本購入: 2人 クリック: 37回この商品を含むブログ (37件) を見る

SSHサーバを立ち上げる。

MacでSSHサーバを立ち上げるには、『システム環境設定』→『共有』にある『リモートログイン』にチェックを付け、『開始』ボタンを押すだけ。 このMacに接続するにはターミナルから、 ssh username@hostname と実行。 パスワードを尋ねられるので、usernameの…

ついにきたけど悔しい。

ついに来たiPhone。 iPhone - Apple アップル iPhone発表 - Engadget 日本版 アップルiPhone:写真ギャラリー - Engadget 日本版 iPhoneを動かしているムービーや写真いろいろ - GIGAZINE Macworld 2007「iPhone」:カメラと動画の機能もついている | ギズモー…

LineTracer

黒い線に沿って走る。 http://youtube.com/watch?v=1mcJ-_HTUqk 黒い線の検知には光センサーを使用しています。 プログラミングは入門LEGO MINDSTORMS NXT レゴブロックで作る動くロボット作者: 大庭慎一郎出版社/メーカー: ソフトバンククリエイティブ発売…

タッチセンサーを使ってみた。

タッチセンサーを取り付け、前進した後、何かにぶつかったら後退するっていうのを、マニュアルに従って作ってみた。 前方にあるぶら下げられた棒の根本付近にあるオレンジ色の物体がタッチセンター。何かにぶつかったり、押されたりすると反応する。 プログ…

始めて作ってみた。

マインドストームNXTの箱に入っている『Start Here』というスタートキットを組み立て、早速、プログラムを書いてみた。 プログラムはこんな感じ。 アイコンを組み合わせて作ります。 ここでは音を出す→前進→停止→回転という動作をさせています。 http://yout…

MacBookとレゴ マインドストームがBluetoothで接続できない。

何てこったい。 マインドストームとMacBookをBluetooth経由で接続しようとしたら、何か試してもダメ。困ったときはGoogle様頼りということで、あれやこれやと検索してみると、こんな情報が。 Bluetoothに関する注意書き。Intel Macを使っている場合、現時点…

買ってしまった、レゴ マインドストーム NXT

レゴ (LEGO) マインドストーム NXT出版社/メーカー: レゴ(LEGO)発売日: 2006/10/15メディア: おもちゃ&ホビー購入: 2人 クリック: 129回この商品を含むブログ (30件) を見る軟禁生活から解放され、何というか新しいことを始めたかったのだ。 今までにプライ…

MacとW-ZERO3[es]でYouTubeの動画を楽しむ。

こちらの2005/11/09の日記で公開されている『ffmpeg-MobileHackerz-051107-MacOSX-2.zip』をダウンロード、展開し/Applicationsに放り込む こちらのページの『AppleScriptで ダウンロード』にある『YouTube_Multi_Download.zip』をダウンロード、展開し適当…

2GBのminiSD(TS2GSDM80)買った。

Transcend miniSDカード 80倍速 2GB TS2GSDM80出版社/メーカー: トランセンド・ジャパン発売日: 2006/06/02メディア: 付属品 クリック: 5回この商品を含むブログ (18件) を見るこれ買った。 W-ZERO3[es]がちゃんと認識してくれるか心配だったけど、問題なか…

ポケットフリップ W-ZERO3[es]購入。

ポケットフリップ W-ZERO3[es]購入。 着ッカバーを使っていたけど、やはりカバーを取り外すと、ブラブラとなってしまうよりは、パカって開いてそのままほったらかしにできるのは魅力的だな、ということで。 早速使ってみる。 装着は至って簡単。何も考えずに…

Missing Sync for Windows Mobile v3.0

Missing Sync for Windows Mobileのバージョンアップをこちらで知り、早速バージョンアップをしようかと思ったら、$19.95必要とのこと。 一瞬、迷ったけど近頃監禁生活を強いられ、ろくなものを買っていないので買ってしまえ、とさくっと購入し、早速インス…

Mugen Power バッテリ W-ZERO3 [es]到着。

もう届いた。ビックリ。 暇なときにバッテリベンチを取ろうと思う。

Mugen Power バッテリ W-ZERO3 [es]を買った。

これ買った。 ノートPCのバッテリがいろいろと騒がれる昨今、純正ではないバッテリは怖い気がしないでもないけど、連続待受時間が33時間も増えるのは魅力的。 早く届け、この野郎。

ティアドロップスタイラスが壊れた。

W-ZERO3[es]で愛用しているティアドロップスタイラスが壊れた。「なんか押しづらいなぁ」と思っていたら、先のツンツンする箇所が無くなっていた。 すぐに新しいのを購入して事なきを得た。 毎日、ズボンの前ポケットに特に気にせず突っ込んでいたり、丁寧に…

リスト事始め。

Haskellにとってリストは超重要らしい。 何せ文字列もリストらしい。 リストは他の言語に多くあるように [1, 2, 3]と書く。 リストの末尾には空リスト(くうりすと)というからの要素があるとのこと。何のために使っているのか? また、リストの中身は全て同じ…