Swift 言語 ForwardIndexType を探る旅

Swift 言語の ForwardIndexType と、ひいては Indexable の性質を探っていた時のツイートをまとめました。自分自身のツイートと合わせて、とても勉強になったツイートもまとめさせて頂きました。
1
前へ 1 2 3 ・・ 6 次へ
ezura @eduraaa

Int(4)...Int(2) ってダメなのと一緒ですね。 #swift

2016-05-05 10:22:18
ezura @eduraaa

Comparable に準拠すると Range を作った時点で、妥当な範囲がどうか判定がされ、ダメならエラーになります。 gist.github.com/c74ea096563358… #swift pic.twitter.com/5gSQFoh3cq

2016-05-05 10:30:23
拡大
Kentarou Kanno @_KentarOu

@eduraaa 自分が5...2とかイメージしていたのはComparableな例の感じでした。違いが分かって納得しましたm(_ _)m

2016-05-05 10:41:28
ezura @eduraaa

実は問題があって、ループするインデックスにComparableを準拠させると、Range 作成時の判定にひっかかり、Rangeが作れなくなるのです(´・ω・`) gist.github.com/c48e7cd8b58ab5… #swift pic.twitter.com/2mKaqPZaxU

2016-05-05 10:56:19
拡大
ezura @eduraaa

Requires: `start <= end` 満たしてるはずなのに何でかなぁと思って、<= 定義してあげたらできた\\\\└('ω')」//// gist.github.com/49d6e1add230fd… #swift pic.twitter.com/QHcXfbKB3H

2016-05-05 19:26:15
拡大
ezura @eduraaa

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

2016-05-05 19:30:58
拡大
ezura @eduraaa

「ループする」=>「Sunday < Monday と Sunday > Monday が成り立つ」ことを表現できていなかった、ということ (。 ・ω・))

2016-05-05 19:38:49
熊谷 友宏 @es_kumagai

基礎力の勝利、みたいな感じね。流石です。

2016-05-05 23:48:00

それから、自分の持つ考え方が広がりを見せはじめてきたみたい?

熊谷 友宏 @es_kumagai

Swift でプロトコルと対話していると、数学的な思考で接する必要性を感じるような気がする。

2016-05-06 09:51:43
熊谷 友宏 @es_kumagai

それが言い表す範囲がどこまでなのか、それで何を語れるのか、それはどんな前提のもとに成り立っているのか、何が公理で何が定義で何が定理か、範囲以上のことを求めてしまってないか、みたいな。その厳密さを追求するほど、世界がきれいに拓けるような、何だかそんな心地がします。

2016-05-06 10:22:12
熊谷 友宏 @es_kumagai

SequenceType が GeneratorType を継承していないところとか、ForwardIndexType と Indexable が分かれているところとか、超かっこいいですよね!

2016-05-06 10:26:43
熊谷 友宏 @es_kumagai

数学方面でたとえるとしたら、これだろうか… 自分は高校数学程度までしか語る力がないので、厳密さを欠いていたら教えて欲しいところですけれど。

2016-05-06 11:31:12
熊谷 友宏 @es_kumagai

たとえば『微分可能』という世界観があって、それにはグラフが滑らかに連続していることが求められますけど、それって別に "微分できなきゃグラフじゃない" とは、いっさい語っていないわけで。

2016-05-06 11:33:02
熊谷 友宏 @es_kumagai

今思えばすごく当たり前のことなんですけど、これを自分は ForwardIndexType で勘違いして、混乱を招いてしまったみたい。そういう厳密なところを、使う上では汲み取る力が、作る上では見極める力が、大切なんだなって、今回を通じて改めて感じた次第でした。

2016-05-06 11:36:20
熊谷 友宏 @es_kumagai

些細な表現のところですけど、さっきの『勘違いして』というのももちろんですけど、それより『見落として』の方がなんかしっくりくるかも。

2016-05-06 11:38:01

そんなある日の Swift 読書会にて、インデックスの感覚を掴む

熊谷 友宏 @es_kumagai

値を『上げていく』? 抽象的に捉えた時に、ちょっと面白そうなところに感じた。 #read_swift

2016-05-15 11:38:54
熊谷 友宏 @es_kumagai

『前へ前へと進みたい』『あなたにとっての "前" とは、どちら?』みたいな。 #read_swift

2016-05-15 11:40:05
熊谷 友宏 @es_kumagai

『ForwardIndexType は、範囲のためにあるのではない』 #read_swift

2016-05-15 11:41:17
熊谷 友宏 @es_kumagai

実装の話になるとなんか難しくなるな。 #read_swift

2016-05-15 11:46:44
熊谷 友宏 @es_kumagai

とりあえず、連続的な世界の空間があった時、それを範囲と表現できる。値が 1, 2, 3 とかが連続ではなくて、先ほど挙がってた軸のお話。 #read_swift

2016-05-15 11:47:43
ezura @eduraaa

前に発表した資料の中で ForwardIndexType と Range の関係を少し説明してます。参考までに。 speakerdeck.com/ezura/swift-fa… #read_swift

2016-05-15 11:49:01
熊谷 友宏 @es_kumagai

たぶん、連続は隣同士が atmic な感じ。隣同士が離れてない。Double みたいなそれを超える非連続的な世界観は Swift では Range ではなく Interval と表現する。 #read_swift

2016-05-15 11:50:47
熊谷 友宏 @es_kumagai

他にも、自分で連続的な値を作る Stride というのもあって、こちらの場合は Range でも Interval でもなく、単純に『そのルールに基づく』シーケンス。 #read_swift

2016-05-15 11:52:22
前へ 1 2 3 ・・ 6 次へ