top page > computer > haskell > web_lecture > for_programmer > dist_tuple.html
更新日:
文責: 重城良国

タプル: 原点からの距離の例

原点から点(x, y)への距離

[原点からの距離の図]

点(x, y)から原点までの距離を求める。xの2乗とyの2乗の和の平方根だ。

distXY.hs

dist0 :: Double -> Double -> Double
dist0 x y = sqrt $ x ^ 2 + y ^ 2

sqrtはsquare root、平方根だ。

% ghci distXY.hs
*Main> dist0 7 9
11.40175425099138
*Main> dist0 3 4
5.0

点pの座標を保存する。

px, py :: Double
px = 9
py = 5

*Main> :reload
*Main> dist0 px py
10.295630140987

タプルにまとめる

「点」というひとつのものをpx, pyという2つの変数で表した。タプルという構造でひとつの値にまとめる。

p :: (Double, Double)
p = (9, 5)

タプルの記法

x1 :: T1, x2 :: T2, x3 :: T3, ...を含むタプルtの定義を示す。

t :: (T1, T2, T3, ...)
t = (x1, x2, x3, ...)

タプルに対するパターンマッチ

パターンマッチでタプルから要素を取り出す。パターン(x, y)に(9, 5)をマッチさせるとx, yはそれぞれ9, 5に束縛される。

dist0' :: (Double, Double) -> Double
dist0' (x, y) = sqrt $ x ^ 2 + y ^ 2

*Main> :reload
*Main> dist0' p
10.295630140987

課題

  1. タプルで表現された2点間の距離を求める関数distを定義せよ

「2つの引数に同じ関数を適用」へもどる 「型変換」へ

正当なCSSです! HTML5 Powered with CSS3 / styling, and Semantics