Swift 言語 ForwardIndexType を探る旅

Swift 言語の ForwardIndexType と、ひいては Indexable の性質を探っていた時のツイートをまとめました。自分自身のツイートと合わせて、とても勉強になったツイートもまとめさせて頂きました。
1
前へ 1 ・・ 4 5 次へ
熊谷 友宏 @es_kumagai

間隔 (IntervalType) は、比較可能な2つの端 (Bounds) によって表現された世界。その中において大小関係が成り立つことだけは約束されているけれど、密度まではどこにも語られていない。かな。 #read_swift

2016-05-15 22:57:23
熊谷 友宏 @es_kumagai

とりあえずこんなくらいで、ひとまず頭の中に転がしておけば良さそうな心地。以上、ForwardIndexType から想像を進めていってみたお話でした。合っているかは判らないけれど、それは多分、ともすると一生以上をかけて確からしさを詰めて行くものな気がする。 #read_swift

2016-05-15 23:01:44
熊谷 友宏 @es_kumagai

今日のお昼の前に『プロトコルの概念的なところはどう学べばいいか?』と尋ねられ、まともに答えられませんでしたけど、たとえば ForwardIndexType であれば、今みたいに向き合いながら自分の想像を築いてく、みたいな感じで回答になっていますでしょうか。 #read_swift

2016-05-15 23:05:13
熊谷 友宏 @es_kumagai

@akio0911 おお。書いてあるこれ、もしかして IndexType と Range にそのまま言えることじゃないですか! なるほど、ということは『Range は中間値の定理を満たすから…』みたいにさらに理論展開していけるのかも?

2016-05-15 23:27:19
熊谷 友宏 @es_kumagai

自分の ForwardIndexType に関する今日の想像は、方向性としてはたぶん間違ってなかったっぽい。安堵 ( ´ △ ` )

2016-05-15 23:29:26
熊谷 友宏 @es_kumagai

昨日のツイートを振り返っていて、そういえば Range は型パラメータとしてですけれど Element と表現されていますね。範囲という世界観において、インデックスは構成要素としてみることができる、みたいに捉えて良い感じかしら。 #read_swift

2016-05-16 08:58:13
熊谷 友宏 @es_kumagai

そうした時の IntervalType が、こちらは付属型ですけれど Bound と表現されるところとの差が面白いですね。 #read_swift

2016-05-16 09:01:41
熊谷 友宏 @es_kumagai

そこで昨日の記憶と照らし合わせて。Range は中身が密だから、それを満遍なく構成している要素と考えられそうで。対して IntervalType は隙間が想定できて、つまり start から end までを構成している、とは言えなさそうな。 #read_swift

2016-05-16 09:02:22
熊谷 友宏 @es_kumagai

こういう繊細な表現の違いを見せつけられると、ついついうっとりとしてしまう。名前の付け方、すごいなぁ #read_swift

2016-05-16 09:05:19
熊谷 友宏 @es_kumagai

ああ、これと今日までの知識を照らし合わせて advancedBy(_:) と advancedBy(_:, limit:) とが別々に存在している意味が汲めた。

2016-05-16 09:36:40

そして再び、横浜みなとみらい

熊谷 友宏 @es_kumagai

以前に歩いたのと同じ道をもう一回辿るのって、なんか好きだったり。

2016-05-16 18:22:29
熊谷 友宏 @es_kumagai

つまり、再び ForwardIndexType !!! …と思ったけれど、これはインデックスタイプではないな…? せいぜいよくて Indexable か。 pic.twitter.com/TOqHDQoJCl

2016-05-16 18:37:47
拡大
熊谷 友宏 @es_kumagai

どうやら少しは成長したみたい( ´ △ ` )

2016-05-16 18:38:57
熊谷 友宏 @es_kumagai

こういう風に景色が変わるの、好きなんですよね。

2016-05-16 18:41:15
熊谷 友宏 @es_kumagai

それからさっきのモチーフに思いを馳せていて、そういえば SequenceType も最低限 ForwardIndexType のように振る舞うのでは?と思ったんですけど、よくよく思えばこれは IndexType と Indexable を混同していて、

2016-05-16 19:05:50
熊谷 友宏 @es_kumagai

そもそも SequenceType が扱うものは(基本的に)インデックスではない、そして SequenceType の要素の位置を何らかの方法で表現したとしても、それを使って直接要素を取得できる訳ではない、つまり Indexable ではない、というか、

2016-05-16 19:09:14
熊谷 友宏 @es_kumagai

そもそも Indexable はインデックスと添え字を使って自由アクセスする性質を表現しているように見えるので、明らかに SequenceType に合致していない。などなど、今ならたくさんの矛盾を具体的に感じられるようになっているみたい。

2016-05-16 19:11:04
熊谷 友宏 @es_kumagai

先ほどのモチーフは観測するに『struct モチーフ : SequenceType, Indexable』みたいな感じかな? いや、よくよく思えば Indexable 性には至っていないかもしれない。そのうちのひとつを指し示すとき『ここからいくつ目』って言いそうだものね。

2016-05-16 19:15:04
熊谷 友宏 @es_kumagai

もしモチーフの1枚1枚に違う色が付いていたなら、それをインデックスにして Indexable もできたんだろうなと思いながら。

2016-05-16 19:16:13

そしてインデックスの意味に気がつく

熊谷 友宏 @es_kumagai

ああ、そうだ。それでいいんでした。それがインデックスとして在るべきなのかをちゃんと意識して見極められれば良いだけで、そうであるなら enum が IndexType であることは至極当然なことでした。

2016-05-17 07:31:08
熊谷 友宏 @es_kumagai

なるほど、まさにこの曜日表現が完璧だ … 自分はその本当の素晴らしさを感じ取れてなかったみたい。曜日は紛いなくインデックス、そしてそれを Range にとって初めて空間が広がる。この感覚はすごい、究極に洗練された表現としか言えない。 twitter.com/eduraaa/status…

2016-05-17 07:42:07
ezura @eduraaa

こうなった。< と == があれば他の不等号は表現できるはず、という思い込みが敗因でしたね。。 gist.github.com/98b7ac1eb1061b… #swift pic.twitter.com/WmoGOueLJ4

2016-05-05 19:30:58
熊谷 友宏 @es_kumagai

これまでの自分の目には現実の美しさばかりが映っていたけど、概念的な世界観でそれを遥かに超えていた。インデックスとは、まさしくこれ!って感じね。

2016-05-17 07:45:37
熊谷 友宏 @es_kumagai

良い表現が見つからないけれど、自分はこれまで Index(索引)という意味をどこか捉え違えていた気がする。なるほど Forward、Bidirectional、RandomAccess みたいな機能性に囚われすぎて、インデックスとは何かを見極めきれてなかったみたい。

2016-05-17 07:49:10
前へ 1 ・・ 4 5 次へ