Swift 言語 ForwardIndexType を探る旅
- es_kumagai
- 1308
- 1
- 0
- 0
Comparable に準拠すると Range を作った時点で、妥当な範囲がどうか判定がされ、ダメならエラーになります。 gist.github.com/c74ea096563358… #swift pic.twitter.com/5gSQFoh3cq
2016-05-05 10:30:23@eduraaa 自分が5...2とかイメージしていたのはComparableな例の感じでした。違いが分かって納得しましたm(_ _)m
2016-05-05 10:41:28実は問題があって、ループするインデックスにComparableを準拠させると、Range 作成時の判定にひっかかり、Rangeが作れなくなるのです(´・ω・`) gist.github.com/c48e7cd8b58ab5… #swift pic.twitter.com/2mKaqPZaxU
2016-05-05 10:56:19Requires: `start <= end` 満たしてるはずなのに何でかなぁと思って、<= 定義してあげたらできた\\\\└('ω')」//// gist.github.com/49d6e1add230fd… #swift pic.twitter.com/QHcXfbKB3H
2016-05-05 19:26:15こうなった。< と == があれば他の不等号は表現できるはず、という思い込みが敗因でしたね。。 gist.github.com/98b7ac1eb1061b… #swift pic.twitter.com/WmoGOueLJ4
2016-05-05 19:30:58「ループする」=>「Sunday < Monday と Sunday > Monday が成り立つ」ことを表現できていなかった、ということ (。 ・ω・))
2016-05-05 19:38:49それから、自分の持つ考え方が広がりを見せはじめてきたみたい?
それが言い表す範囲がどこまでなのか、それで何を語れるのか、それはどんな前提のもとに成り立っているのか、何が公理で何が定義で何が定理か、範囲以上のことを求めてしまってないか、みたいな。その厳密さを追求するほど、世界がきれいに拓けるような、何だかそんな心地がします。
2016-05-06 10:22:12SequenceType が GeneratorType を継承していないところとか、ForwardIndexType と Indexable が分かれているところとか、超かっこいいですよね!
2016-05-06 10:26:43数学方面でたとえるとしたら、これだろうか… 自分は高校数学程度までしか語る力がないので、厳密さを欠いていたら教えて欲しいところですけれど。
2016-05-06 11:31:12たとえば『微分可能』という世界観があって、それにはグラフが滑らかに連続していることが求められますけど、それって別に "微分できなきゃグラフじゃない" とは、いっさい語っていないわけで。
2016-05-06 11:33:02今思えばすごく当たり前のことなんですけど、これを自分は ForwardIndexType で勘違いして、混乱を招いてしまったみたい。そういう厳密なところを、使う上では汲み取る力が、作る上では見極める力が、大切なんだなって、今回を通じて改めて感じた次第でした。
2016-05-06 11:36:20些細な表現のところですけど、さっきの『勘違いして』というのももちろんですけど、それより『見落として』の方がなんかしっくりくるかも。
2016-05-06 11:38:01そんなある日の Swift 読書会にて、インデックスの感覚を掴む
とりあえず、連続的な世界の空間があった時、それを範囲と表現できる。値が 1, 2, 3 とかが連続ではなくて、先ほど挙がってた軸のお話。 #read_swift
2016-05-15 11:47:43前に発表した資料の中で ForwardIndexType と Range の関係を少し説明してます。参考までに。 speakerdeck.com/ezura/swift-fa… #read_swift
2016-05-15 11:49:01たぶん、連続は隣同士が atmic な感じ。隣同士が離れてない。Double みたいなそれを超える非連続的な世界観は Swift では Range ではなく Interval と表現する。 #read_swift
2016-05-15 11:50:47他にも、自分で連続的な値を作る Stride というのもあって、こちらの場合は Range でも Interval でもなく、単純に『そのルールに基づく』シーケンス。 #read_swift
2016-05-15 11:52:22