Avatar
↑とかもできるわけだし。 (edited)
11:46 PM
やっぱり Foo | NilEither<Foo, Nil> を混ぜて扱うこと自体に無理がある・・・。 Codable と JSON の Foo?? とかも。色んなところで歪みが出るのは避けられなくて、できるだけ普段目に触れないところで出すようにしてるけど、普段目に見えないからこそ不意をつかれた感じになる。
11:52 PM
一方で、 Obj-C 連携とか、普段の使い勝手(たとえば Optional に代入する度に .some を書くべきなのか)とかを考えると仕方ないよなぁ。仮に全部 Foo | Nil に寄せると IteratorProtocolnext が( ElementOptional のときに)表現できないとかそれはそれで問題があって、とはいえ Foo | NilEither<Foo, Nil> を適切に使い分けるのもハードルが高いし、どれを取っても一長一短。なので、 Swift は理論的なきれいさよりも実用上の使いやすさをとって、その分生じる歪みをできるだけ目立たないところで消化するという選択なんだろうなぁ。