1. Top » 
  2. Haskell

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Genre:

【Haskell】高階関数と型の定義について

過去の記事
【Haskell】とても簡単なHaskellプログラムについて/strong>
【Haskell】標準入力(stdin)を読み込むために
【Haskell】結構頻繁に使う関数などの話



Haskell記事の第四回目になります。
特徴的なmap関数、すごい!

 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



関数の型宣言・・・引数や返値の型

 関数名 :: 第一引数 -> 第二引数 -> ・・・ -> 返値




==演算子
型 → (==) :: a -> a -> true
 同じ型のものを比較して一致ならtrue


map関数
型 → map :: ( a -> b ) -> [a] -> [b]
 型aに対して型bを返す関数とaのリストを受け取って
 全てのaの中身に関数を作用した結果bのリストを返す
 これを高階関数と呼ぶ(関数自体を渡す関数)
 ※関数の返値を渡すのとは違う


if
使い方 → if 条件式 then 式1 else 式2
 条件式がTrueなら式1、Falseなら式2を返す


以上を元にした動作の分解
動作の分解
 

 map translate "abc\n"
 map translate [ 'a' , 'b' , 'c' , '\n' ]
 [(translate 'a'),(translate 'b'),(translate 'c'),(translate '\n')]
 ['a','b','c','\n']
 "abc\n"



【Haskell】結構頻繁に使う関数などの話

過去の記事
【Haskell】とても簡単なHaskellプログラムについて
【Haskell】標準入力stdinを読み込むために



Haskell#1とHaskell#2で利用した関数とアクションのまとめ。


利用したアクション
 getContents 標準入力を全て入力

利用した関数
 putStr
  putStr cs 文字列csを出力するアクション返す
 putStrLn
  putStrLn cs 文字列csと改行を出力するアクションを返す
 print
  print x 値xを出力するアクションを返す
 length
  length xs リストxsの長さを返す
 take
  take n xs リストxsの先頭からのn個のみを含むリストを返す
 reverse
  reverse xs リストxsを逆順にしたリストを返す
 lines
  lines cs 文字列csを行ごとにリストに分割したリストを返す
 unlines
  unlines cs 文字列のリストxsを改行を挟んで連結した文字列を返す

【Haskell】標準入力(stdin)を読み込むために

過去の記事
【Haskell】とても簡単なHaskellプログラムについて



main = do cs <- getContents
       putStr cs



このとき、do後ろの
cs <- getContents
putStr cs
のインデントは揃えなければならない。
このようにdoの後ろに揃えることで上から順に実行されることが保証される←ここ重要。
Haskellの使用で、式の評価(実行)が前後するときがあるので、doで指示する。

○getContents
標準入力をまとめて得る
 このとき、必要となった分だけ入力される。
 標準入力であれば一行ずつ
 ファイルからダイレクトでくれば全部まとめて など

○putStr
改行しない

【Haskell】とても簡単なHaskellプログラムについて

最も簡単なプログラムHaskell
main = putStrLn "Hello, World!"



○変数の定義
名前 = ...
名前は大文字と小文字で区別される

○main
mainはプログラムの開始となるアクション
Haskellプログラム = main

○アクション
関数ではないHaskellの値。
評価されると入出力などが実行される。

○文字列リテラル
”Hello, World!”
定番のやつ

○関数の適用
putStrLn = System.out.println
putStrLn "Hello, World!"
これを Hello WorldにputStrLn関数を適用する と呼ぶ。


○まとめ
変数mainの定義 → mainはputStrLn "Hello, World!"である
putStrLnは文字列を標準出力に出力するための関数

Page Top

訪問者

お引っこし。 http://parabola.sblog.jp/

プロフィール

parabola0

Author:parabola0
Twitter用ですが…。
プロフィール

最新記事
最新コメント
最新トラックバック
カテゴリ
月別アーカイブ
検索フォーム
リンク

このブログをリンクに追加する

QRコード
QRコード
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。