みたろーのさんどぼっくす

やってみたあんなことやそんなこととかを、気が向いたらまとめてみるよ。

: ひとつ違うだけで / 7つの言語… Io・1日目

引き続いて、これ、やってます。っと。

7つの言語 7つの世界

7つの言語 7つの世界

で、Io 1日目なわけですが、これが…思った以上に手強い。

探してみようの巻

いきなりここで躓くのです…問題点は「見つからないこと」とか悪態をつきたくなるような。

一応、見つけたリンクを貼っつけておきますかね。

Io Programming/Io Style Guide

http://en.wikibooks.org/wiki/Io_Programming/Io_Style_Guide

…これだけかよ(セルフツッコミ

確認してみよう

強い型付け? 弱い型付け?

*1気を取り直して。Io は、暗黙の型変換がないから、強い型付け。

0, "", nil, true, false

Io では、すべて別のもの。ただ、if()メソッドの条件式においては、nil と false を偽として取り扱い、他の値をすべて真とみなす。そういう意味では、0・""・true は真だし、nil・falseは偽と言える。 Io Programming Guide( http://iolanguage.org/scm/io/docs/IoGuide.html#Control-Flow-If-Then-Else )より抜粋。

if, then, else

The if() method can be used in the form:

if(<condition>, <do message>, <else do message>)

Example:

if(a == 10, "a is 10" print)

The else argument is optional. The condition is considered false if the condition expression evaluates to false or nil, and true otherwise.

プロトタイプに存在するスロット

を確認する方法は、簡単なので、略。

=, :=, ::=

= と := については本文中に違いが説明してあるので省略。では、::= は何か。これもまずは Io Programming Guide( http://iolanguage.org/scm/io/docs/IoGuide.html#Syntax-Assignment )から抜粋。

Assignment

Io has three assignment operators:

 operator  action
 ::=   Creates slot, creates setter, assigns value
 :=    Creates slot, assigns value
 =     Assigns value to slot if it exists, otherwise raises exception

実際に使ってみると、たしかにsetterのスロットも作られる。でもなんで必要なのかよくわからなかった。で、「io language newslot vs setslot」で検索してみると…

Whats the difference between newSlot and setSlot in the Io Language?

http://stackoverflow.com/questions/5972327/whats-the-difference-between-newslot-and-setslot-in-the-io-language

…セッターがないと表現できないことがあって、セッターを作ることを推奨するため、と理解。

試してみよう

試してみた。

https://github.com/mitaroThanken/seven-languages-in-seven-weeks/tree/master/Io/Day1

まとめ?

実は「手強い。」から半分近くまで書いて、約1日たってから後半を書いている。すると、意外とするすると頭の中に収まっていく感じがしている。2日目以降も焦らず地道にやっていく事にする。

という事で、まだまだ続きます。


*1:色々と厳密な定義を忘れてしまっている現実に直面させられる…