[過去ログ] 関数型プログラミング言語Haskell Part14 (1001レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
734
(3): デフォルトの名無しさん [sage] 2011/06/26(日)02:42
>>728-733
リストと配列という特性が全然違うデータ構造でのswapを比較して言語の優劣を議論してる時点で全員論外というか何も理解してないのが丸分かり。
リストは伸縮は自在だが要素のアクセスに関してリスト長Lに比例するO(L)時間が必要、配列は伸縮は困難だが要素アクセスはO(1)時間。
こんなに違うものについての「要素の交換」を同じ土俵の上だと思って比較して関数型と手続き型の優劣を議論するのは何もわかってない証拠。

手続き型の配列に相当するものは関数型言語では定義域が有限区間の写像であってリストじゃない。
逆に関数型でのリストに相当する手続き型でのデータ構造は構造体とポインタで作る普通の一方向リストだ。

手続き型プログラミング言語で一方向リストの先頭要素と最終要素をやるには、Haskellでのlastやinitや++に相当する関数を
先ず自分で再帰的に定義すれば交換そのものは729のHaskellでのとほぼ同じ書き方になる。
(C言語だとinfix operatorは自分で定義できないからHaskellでの++はCでは普通の関数呼び出しになり見た目は綺麗じゃないが本質的な問題じゃない)
742: デフォルトの名無しさん [sage] 2011/06/26(日)11:09
>>734
配列が伸縮困難というのは嘘
はじめから要素数を必要以上に確保しておいて、ただ単に最大要素の添え字Nを変えればいいだけの話
744: デフォルトの名無しさん [sage] 2011/06/26(日)11:52
>>734
全くその通りで、言ってること自体には何の反論もないが
なんか論点が違うような気がする

>>723>>725(私)も、>>719 の通り
「プログラミングに一度も触れたことのないような何も知らない人に勉強させる」
ことを前提で考えている

で、>>723 が提示したのは「数列などの順番は関数型の方が教えやすい」というものだ

「何も知らない人に」数列などの順番の入れ替える概念や実際のプログラムを教えるのに、
どちらが教えやすい&理解させやすいんだろうねという議論

だから、リストを使おうが配列を使おうが他のものを使おうが、
そんなことはどうでもいいし、伸縮とかアクセス時間(効率)とかはもっとどうでもいい

私たちが議論していた論点は、これからプログラムを組んでいく上で頻繁に出くわすであろう
要素の入れ替えという概念と実際のプログラムの、教えやすさと理解しやすさだよ
それが理解できなければ効率もなにもない
755: デフォルトの名無しさん [sage] 2011/06/26(日)14:28
>>734
まあ、ぶっちゃけhaskellでもCでも、リストと配列両方使えるけど、初心者はその言語で基本的なデータ構造使うので、初心者でなければ配列とリストで適した方を使えば良い

ただ、初心者が扱うならせいぜい5個とか10個程度の要素数だろうから、その並べ替え程度なら、要素に名前付けて、入れ替えるだけって言うのも出来る
(>>729の3つ組の例)

あと、初心者はよく
a=a+1
ってどう言う事?とか聞いて来る
代入、(数学ではなく、言語の)変数の概念を理解する必要がある
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.043s