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

問題 過去の定期試験問題 tkunishi complang1 20080204

N/A
N/A
Protected

Academic year: 2018

シェア "問題 過去の定期試験問題 tkunishi complang1 20080204"

Copied!
2
0
0

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

全文

(1)

2007 年度(平成19年度)計算機言語Ⅰ定期試験問題

以下の問はすべてStandard MLを用いて答えること。

1.

型と式(40点)

(1)次の式や関数の型を示せ。(各5点)

(i) true = false

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

(iv) fun f(0, n) = n

| f(m, n) = f(n mod m, m);

(v) (fn x => x + 1.0, [1.0, 2.0, 3.0])

(2)パターン

(x,y)::zs

と式

[([1,2], true)]

の照合は成功するか。理由を添えて答え

よ。(5点)

(3)(1)(iv)の関数

f

について、

f(14, 3)

の実行の際に発生する再帰呼び出しを順に列挙

せよ。また

f(14, 3)

の値を示せ。(10点)

2.

関数(45点)

次の関数を実装せよ。((4)のみ15点、他は各10点)

(1)リストの4番目以降の要素からなるリストを返す関数

cdddr: ’a list -> ’a

。例え

cdddr([1,2,3,4]) = [4]

となる。引数に与えるリストの要素数が3以下の場合の

エラー処理は考慮しなくてよい。

(2)文字列のリストの要素をすべて連結した文字列を返す再帰関数

concatall: string list -> string

。例えば

concatall(["This", "is", "a", "pen"]) =

"Thisisapen"

となる。

(3)2項組のリストを成分ごとのリストに分解する再帰関数

unzip: (’a * ’b) list ->

’a list * ’b list

。例えば

unzip([("string", 3), ("at", 10),

("language", 5)])

の結果は

(["string","at","language"],[3,10,5])

とな

る。

(4)リストのリストに対し、各リストの偶数番目の要素のみからなるリストを得る再帰関

evenel: ’a list list -> ’a list

。例えば

evenel([[1,2,3], nil,

[4,5,6], [7], [8,9]])

の結果は

[2, 5, 9]

となる。

(裏面に続く)

2008-02-04

(2)

3.

高階関数(15点)

2分木を表すデータ型

datatype ’a btree = Empty | Node of ’a * ’a btree * ’a

btree

は定義済みであるとして、以下の問いに答えよ。

(1)次の高階関数

g

はどのような計算を行うか、説明せよ。(10点)

fun g(F, Empty) = Empty

| g(F, Node(a, l, r)) = Node(F(a), g(F, l), g(F, r));

(2) g(fn (x, y) => x::y::nil, Node((3,4), Node((6,1), Empty, Empty),

Empty))

の値とその型を示せ。(5点)

2008-02-04

参照

関連したドキュメント

けることには問題はないであろう︒

※短期:平成 30 年度~平成 32 年度 中期:平成 33 年度~平成 37 年度 長期:平成 38 年度以降. ②

 筆記試験は与えられた課題に対して、時間 内に回答 しなければなりません。時間内に答 え を出すことは働 くことと 同様です。 だから分からな い問題は後回しでもいいので

2013

難病対策は、特定疾患の問題、小児慢性 特定疾患の問題、介護の問題、就労の問題

年度 開催回 開催日時 テーマ. もえつきを防ぐ問題解決の思考法