関数と配列

ちょwwwおまwww
id:nuc:20060121:p2
そうなると、配列を破壊的代入可能な関数とみなすのか・・・?とりあえず、関数の引数が0からn-1という制限があるので、例えばこんな感じの関数を宣言することになるのだろうか。

# exception ArrayIndexException;;
exception ArrayIndexException
# let array n func = 
  	fun m -> if (m < 0 || n <= m) then raise ArrayIndexException
  		else func m;;
val array : int -> (int -> 'a) -> int -> 'a = <fun>
# let array1 = array 10 (fun n -> n);;
val array1 : int -> int = <fun>
# array1 10;;
Exception: ArrayIndexException.
# array1 4;;
 - : int = 4

どうでもいいですか、そうですか。

追記:逆に、intを引数とする関数は全て配列で実装と言う考え方も出来る。その方針で計算するほうが時間オーダーを削れると言う可能性も否定できない。実際にPKUではそういう問題もある。