タプルとリストというデータ構造について。タプルは、AとBの型を持つのが合計2つあるというものリストは、Aが0以上、100個でも良いしもっとでも良い。取り出したときにキャストが必要で、型が失われますね。Stringが順序とともに詰め込める。リストは混在したものを表現できない今日は、2つのHListを取ってきてくっつけることをしてみる普通のリストのAppend型パラメーターを1つしか取らないようなAppendでは無理がありそうJavaだと大変そうだが、SwiftはProtocolExtensionがあるので面白く実装できる知っている人もいるかと思うがおさらいしていこうと思います。JavaのInterfaceのようだと言われることがある型パラメータAを受け取ってJsonに変換するようなもの。Userというクラスを作って、JSONWriteに適合していればJSONにできる確かに似ているように見えるでは、ありがちなケースとしてIntや、他人のライブラリのデータ構造を改造したい場合があるJavaはAdapterパターンと言って、Integerを拡張したものを作るしか手が打てないことがあるしかしSwiftはExtensionですでにFixした型を拡張できる型で機能を探してくるということができる。Extensionを再現できないさて、appendを作れないかもう一度普通のListのAppendをみるA(最初の引数)によって分岐している。長さ1以上なら繰り返すAがnilなら、2番目の引数を返す。いう再帰的な処理をしている配列の長さはruntimeの情報。われわれはHListの型でディスパッチした機能を変更したい。型情報はコンパイルタイムの情報だから、コンパイルタイムにこちらの機能を使うのかあちらの機能を使うのかディスパッチしたい。Extensionがよい。いずれもHListに適合したassociatedtypeを持つまずはnilのケースからやっていきましょうApp1はExtensionを作るときにGenerics、型パラメーターを引っ張ってこられないので、App1でHlistの方をもってくるために作ったからのHListと何かのHListをもってきたら2番めの引数だけ返す長さが1以上なら問題を整理where句をいくらいじっても、もうHListに適合していますと言われてコンパイルが成功しない普通のリストのAppendはAppend自身を再帰的にもってきていた。そのもってきていたAppendをどこから持ってくるのか。App1がもってこられないのは別の方を使えば良い。型パラメーターも足りなかったのでApp1〜App3まで用意してやったでもこれではRightとResultに何を入れるのかという問題が残る思い切ってApp5まで増やしたEVはHAppendに適合しているかんですがこうしました何がどうなっているかと思われるかもしれない。Aは1と2が入っていて、Bは3と4が入っている。CはA+Bが等しいと行っている。CはAとBをアペンドした結果になっているべきそこへDを登場させる。Aの先頭にDが突っ込んである。Bは上のBと同じResultの四季がややこしいがmAの先頭にDを足したものにBを足す。一瞬で理解するのは大変だと思いますが、こうするとうまく型がつく。上が原著、下が翻訳書です。巷では難しいと言われがち。たしかにオライリーとか、プログラミング入門のホントは毛色が違うところがある、でも平易なところから高度なところまでカバーしているすごく良い本。興味を持たれたら手にとってください。ご清聴ありがとうございました。書かれた関数型言語です。はてなブログPro大学時代に耳が聞こえない生徒が講義に参加できるようにリアルタイムに文字起こしするバイトをしていました。いまはエンジニアとして働きつつ、勉強会やカンファレンスで話される技術分野の知見を文章に残し、検索可能にしたり、地方で活動する方に届けたいと思っています。お役に立ちましたら、支援いただけると幸いです。(24)注目記事はてなブログをはじめよう!niwatakoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。