忍者ブログ

2024-05-04(Sat)

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

2010-01-19(Tue)

集合と写像

おはようございます。数式をブログに貼り付けれる「Formula」というをサービスを見つけたので早速サンプル。

  

綺麗に表示されてますでしょうか?? 本当はWikipediaでいうところのTexのタグがほしいところだけど、まぁしょうがないか。


------


昨日Ackeyと一緒に圏論を勉強したら、関数型プログラミングの本質がだいぶわかってきました。

関数型指向では、全ての問題は集合Xから集合Yへの写像fがあるとして、

  

と表現できることがもっとも"扱いやすく"、美しいとされているみたいです。

その点、命令型指向では、モジュール(手続きをまとめた="抽象化した"まとまり)の記述には関数やオブジェクトを使うものの、ミクロな部分は手続きを記述することに終始します。このことが関数型と命令型の大きな違い。

特にその違いが出てくるのが、配列やリストの処理。


関数型言語では、配列やリストを「集合」であると捕え、写像する関数を使って値を処理するという風に処理します。具体的には次のような構文が使われます。

  print( Array(1,2,3,4,5).map(_*2) ) // 2,4,6,8,10が表示される

命令型では、その手続きを考えて、一般には次のように処理します。

  int[] a = {1,2,3,4,5};
 
   for(int i=0; i<5; i++){
     print( a[i]*2 );
   }

どちらが直感的かは、見て分かることと思います。

この処理の違いは、"関数が引数としてとれる"からと見ることもできますが、そうではなくて、"計算とは、ある要素からある要素への写像で表すことができる"という見方があり、その結果として関数が引数に渡せるようになっていると考えるのがベストだと感じました。


とりま、百聞は一見に如かず。

次回から、Scalaの能力をフルに生かしたプログラムを作っていこうと思います。
PR

この記事にコメントする

Name
Title
Mail
URL
Comment
Pass
Pictgram
Vodafone絵文字 i-mode絵文字 Ezweb絵文字

この記事へのトラックバック

この記事にトラックバックする

Calender :

04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

New Comments :

[11/18 DSLR-A900]
[02/03 daveenbooh]
[02/03 tiaunaande]
[02/03 arnottkilb]

Profile :

HN:
funatii
年齢:
36
HP:
性別:
男性
誕生日:
1987/11/02
職業:
音響設計学科3年
趣味:
メディアアート・散歩

for mobile :

Search for funattii :

Welcome to funattii's blog !