• 検索結果がありません。

complang1 20060213

N/A
N/A
Protected

Academic year: 2018

シェア " complang1 20060213"

Copied!
2
0
0

読み込み中.... (全文を見る)

全文

(1)

平成17年度(2005年度)計算機言語 I 定期試験問題

以下の問はすべて Standard ML を用いて考えよ。

1. 型と式 (40点)

(i) 次の式について、正しい式の場合は評価した値、およびその型を示せ。誤った式の場合はその理

由を示せ。(各5点)

(a) [true]::[[false, true, true], nil] (b) #3([1,4,9], (1,4,9), (1, (4,9))) (c) hd(tl(#1([1,5,100], "string", 500)))

(ii) 次の型に属する式の例を示せ。(各5点)

(a) real * (bool * bool * bool) * char (b) (int list * int list) list

(c) (string list * (char * bool)) * int

(iii)式

([(1,2), (3,4), (5,6)], [#"a", #"b", #"c"])

をパターン

(x::y::zs, w::ws)

に照合さ

せるとき、変数

x, y, zs, w, ws

にはそれぞれどのような値が束縛されるか示せ。(10点)

2. 関数 (50点)

次の関数を実装せよ。(各10点)

(i) 長さ3の組について、3番目の要素、2番目の要素、1番目の要素を順に並べた組を返す関数

reverseTuple: 'a * 'b * 'c -> 'c * 'b * 'a

。例えば

reverseTuple(1, #"a",

"string") = ("string", #"a", 1)

となる。

(ii) 整数のリストから10未満の整数を取り除く再帰関数

removeUnderTen: int list -> int list

。例えば

removeUnderTen([1, 20, 5, 30, ~10, 40]) = [20, 30, 40]

となる。

(iii)ブール値のリスト

L = [x1, x2, …, xn]

について、

x1, x2, …, xn

の論理和を得る再帰関数

or: bool list -> bool

。例えば

or([true, false, false, false]) = true

となる。な

お、

or(nil) = false

としてよい。

(iv)二分木を表す次のデータ型が定義されているものとし、ラベルが整数であるような二分木Tを考え

る。このとき、T中でラベルが整数xより大きい節点の数を求める再帰関数

largerThan(T, x): int btree * int -> int

。例えば

largerThan(Node(10, Node(3, Empty, Empty), Node(6, Empty, Empty)), 5) = 2

となる。Tは二分探索木とは限らないことに注意せよ。

datatype ’a btree = Empty

  | Node of ’a * ’a btree * ’a btree;

(v) 正の実数のリストのリストについて、最大の要素を得る再帰関数

maxEl: real list list -> real

。例えば

maxEl([[1.0, 5.0, 30.0], [15.0, 43.1], nil]) = 43.1

となる。なお

maxEl(nil) = 0.0

としてよい。

2006-02-13

(2)

3. 高階関数 (10点)

2. (iii) の or と同じ動作をする関数 or2 を、下の高階関数 reduce: ('a * 'a -> 'a) * 'a list -> 'aを用い

て実装せよ。

なお、ここで言う「同じ動作をする」

とは「同じ引数に対して同じ値を返

す」という意味であり、「同じアルゴ

リズムで計算する」という意味ではな

い。

exception EmptyList;

fun reduce(F, nil) = raise EmptyList | reduce(F, [a]) = a

| reduce(F, x::xs) = F(x, reduce(F, xs));

2006-02-13

参照

関連したドキュメント

現実感のもてる問題場面からスタートし,問題 場面を自らの考えや表現を用いて表し,教師の

そればかりか,チューリング機械の能力を超える現実的な計算の仕組は,今日に至るま

に関して言 えば, は つのリー群の組 によって等質空間として表すこと はできないが, つのリー群の組 を用いればクリフォード・クラ イン形

[r]

(a) 主催者は、以下を行う、または試みるすべての個人を失格とし、その参加を禁じる権利を留保しま す。(i)

のようにすべきだと考えていますか。 やっと開通します。長野、太田地区方面  

地下貯水槽No.2 No.2からの漏えい量は、当初考えていた約 からの漏えい量は、当初考えていた約120 120m m 3

 模擬授業では, 「防災と市民」をテーマにして,防災カードゲームを使用し