├── .editorconfig ├── .envrc ├── .github ├── settings.yml └── workflows │ ├── nix-flake-check.yaml │ ├── nix-fmt-checks.yaml │ ├── prettier-checks.yaml │ └── release.yaml ├── .gitignore ├── .latexindent.yaml ├── .prettierignore ├── .prettierrc ├── LICENSE ├── Makefile ├── README.md ├── errata-1.0.0.md ├── errata-1.3.0.md ├── errata-scala.md ├── flake.lock ├── flake.nix └── src ├── acknowledgments.tex ├── category.tex ├── colophon.tex ├── content ├── 0.0 │ ├── images │ │ ├── beauvais_interior_supports.jpg │ │ └── img_1299.jpg │ ├── preface-zh-cn.tex │ └── preface.tex ├── 1.1 │ ├── category-the-essence-of-composition-zh-cn.tex │ ├── category-the-essence-of-composition.tex │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ └── snippet06.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ └── snippet06.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ └── snippet06.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ └── snippet06.scala │ └── images │ │ └── img_1330.jpg ├── 1.10 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ ├── snippet10.hs │ │ │ ├── snippet11.hs │ │ │ ├── snippet12.hs │ │ │ ├── snippet13.hs │ │ │ ├── snippet14.hs │ │ │ ├── snippet15.hs │ │ │ ├── snippet16.hs │ │ │ ├── snippet17.hs │ │ │ ├── snippet18.hs │ │ │ ├── snippet19.hs │ │ │ ├── snippet20.hs │ │ │ ├── snippet21.hs │ │ │ ├── snippet22.hs │ │ │ ├── snippet23.hs │ │ │ ├── snippet24.hs │ │ │ ├── snippet25.hs │ │ │ ├── snippet26.hs │ │ │ └── snippet27.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ ├── snippet10.ml │ │ │ ├── snippet11.ml │ │ │ ├── snippet12.ml │ │ │ ├── snippet13.ml │ │ │ ├── snippet14.ml │ │ │ ├── snippet15.ml │ │ │ ├── snippet16.ml │ │ │ ├── snippet17.ml │ │ │ ├── snippet18.ml │ │ │ ├── snippet19.ml │ │ │ ├── snippet20.ml │ │ │ ├── snippet21.ml │ │ │ ├── snippet22.ml │ │ │ ├── snippet23.ml │ │ │ ├── snippet24.ml │ │ │ ├── snippet25.ml │ │ │ ├── snippet26.ml │ │ │ └── snippet27.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ ├── snippet10.re │ │ │ ├── snippet11.re │ │ │ ├── snippet12.re │ │ │ ├── snippet13.re │ │ │ ├── snippet14.re │ │ │ ├── snippet15.re │ │ │ ├── snippet16.re │ │ │ ├── snippet17.re │ │ │ ├── snippet18.re │ │ │ ├── snippet19.re │ │ │ ├── snippet20.re │ │ │ ├── snippet21.re │ │ │ ├── snippet22.re │ │ │ ├── snippet23.re │ │ │ ├── snippet24.re │ │ │ ├── snippet25.re │ │ │ ├── snippet26.re │ │ │ └── snippet27.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ ├── snippet10.scala │ │ │ ├── snippet11.scala │ │ │ ├── snippet12.scala │ │ │ ├── snippet13.scala │ │ │ ├── snippet14.scala │ │ │ ├── snippet15.scala │ │ │ ├── snippet16.scala │ │ │ ├── snippet17.scala │ │ │ ├── snippet18.scala │ │ │ ├── snippet19.scala │ │ │ ├── snippet20.scala │ │ │ ├── snippet21.scala │ │ │ ├── snippet22.scala │ │ │ ├── snippet23.scala │ │ │ ├── snippet24.scala │ │ │ ├── snippet25.scala │ │ │ ├── snippet26.scala │ │ │ └── snippet27.scala │ ├── images │ │ ├── 10_horizontal.jpg │ │ ├── 1_functors.jpg │ │ ├── 2_natcomp.jpg │ │ ├── 3_naturality.jpg │ │ ├── 4_transport.jpg │ │ ├── 5_vertical.jpg │ │ ├── 6_verticalnaturality.jpg │ │ ├── 6a_vertical.jpg │ │ ├── 7_cathomset.jpg │ │ ├── 8_cat-2-cat.jpg │ │ ├── 9_horizontal.jpg │ │ ├── naturality.jpg │ │ └── sideways.jpg │ ├── natural-transformations-zh-cn.tex │ └── natural-transformations.tex ├── 1.2 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ ├── snippet10.hs │ │ │ └── snippet11.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet010.ml │ │ │ ├── snippet011.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ ├── snippet10.ml │ │ │ └── snippet11.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet010.re │ │ │ ├── snippet011.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ ├── snippet10.re │ │ │ └── snippet11.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ ├── snippet10.scala │ │ │ └── snippet11.scala │ ├── images │ │ └── img_1329.jpg │ ├── types-and-functions-zh-cn.tex │ └── types-and-functions.tex ├── 1.3 │ ├── categories-great-and-small-zh-cn.tex │ ├── categories-great-and-small.tex │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ └── snippet02.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ └── snippet02.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ └── snippet02.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ └── snippet02.scala │ └── images │ │ ├── monoid.jpg │ │ ├── monoid.png │ │ └── monoidhomset.jpg ├── 1.4 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ └── snippet07.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ └── snippet07.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ └── snippet07.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ └── snippet07.scala │ ├── images │ │ └── piggyback.jpg │ ├── kleisli-categories-zh-cn.tex │ └── kleisli-categories.tex ├── 1.5 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ ├── snippet10.hs │ │ │ ├── snippet11.hs │ │ │ ├── snippet12.hs │ │ │ ├── snippet13.hs │ │ │ ├── snippet14.hs │ │ │ ├── snippet15.hs │ │ │ ├── snippet16.hs │ │ │ ├── snippet17.hs │ │ │ ├── snippet18.hs │ │ │ ├── snippet19.hs │ │ │ ├── snippet20.hs │ │ │ ├── snippet21.hs │ │ │ ├── snippet22.hs │ │ │ ├── snippet23.hs │ │ │ ├── snippet24.hs │ │ │ ├── snippet25.hs │ │ │ ├── snippet26.hs │ │ │ ├── snippet27.hs │ │ │ └── snippet28.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ ├── snippet10.ml │ │ │ ├── snippet11.ml │ │ │ ├── snippet12.ml │ │ │ ├── snippet13.ml │ │ │ ├── snippet14.ml │ │ │ ├── snippet15.ml │ │ │ ├── snippet16.ml │ │ │ ├── snippet17.ml │ │ │ ├── snippet18.ml │ │ │ ├── snippet19.ml │ │ │ ├── snippet20.ml │ │ │ ├── snippet21.ml │ │ │ ├── snippet22.ml │ │ │ ├── snippet23.ml │ │ │ ├── snippet24.ml │ │ │ ├── snippet25.ml │ │ │ ├── snippet26.ml │ │ │ ├── snippet27.ml │ │ │ └── snippet28.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ ├── snippet10.re │ │ │ ├── snippet11.re │ │ │ ├── snippet12.re │ │ │ ├── snippet13.re │ │ │ ├── snippet14.re │ │ │ ├── snippet15.re │ │ │ ├── snippet16.re │ │ │ ├── snippet17.re │ │ │ ├── snippet18.re │ │ │ ├── snippet19.re │ │ │ ├── snippet20.re │ │ │ ├── snippet21.re │ │ │ ├── snippet22.re │ │ │ ├── snippet23.re │ │ │ ├── snippet24.re │ │ │ ├── snippet25.re │ │ │ ├── snippet26.re │ │ │ ├── snippet27.re │ │ │ └── snippet28.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ ├── snippet10.scala │ │ │ ├── snippet11.scala │ │ │ ├── snippet12.scala │ │ │ ├── snippet13.scala │ │ │ ├── snippet14.scala │ │ │ ├── snippet15.scala │ │ │ ├── snippet16.scala │ │ │ ├── snippet17.scala │ │ │ ├── snippet18.scala │ │ │ ├── snippet19.scala │ │ │ ├── snippet20.scala │ │ │ ├── snippet21.scala │ │ │ ├── snippet22.scala │ │ │ ├── snippet23.scala │ │ │ ├── snippet24.scala │ │ │ ├── snippet25.scala │ │ │ ├── snippet26.scala │ │ │ ├── snippet27.scala │ │ │ └── snippet28.scala │ ├── images │ │ ├── coproductpattern.jpg │ │ ├── coproductranking.jpg │ │ ├── final.jpg │ │ ├── initial.jpg │ │ ├── not-a-product.jpg │ │ ├── productcandidates.jpg │ │ ├── productpattern.jpg │ │ ├── productranking.jpg │ │ └── uniqueness.jpg │ ├── products-and-coproducts-zh-cn.tex │ └── products-and-coproducts.tex ├── 1.6 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ ├── snippet10.hs │ │ │ ├── snippet11.hs │ │ │ ├── snippet12.hs │ │ │ ├── snippet13.hs │ │ │ ├── snippet14.hs │ │ │ ├── snippet15.hs │ │ │ ├── snippet16.hs │ │ │ ├── snippet17.hs │ │ │ ├── snippet18.hs │ │ │ ├── snippet19.hs │ │ │ ├── snippet20.hs │ │ │ ├── snippet21.hs │ │ │ ├── snippet22.hs │ │ │ ├── snippet23.hs │ │ │ ├── snippet24.hs │ │ │ ├── snippet25.hs │ │ │ ├── snippet26.hs │ │ │ ├── snippet27.hs │ │ │ ├── snippet28.hs │ │ │ ├── snippet29.hs │ │ │ ├── snippet30.hs │ │ │ ├── snippet31.hs │ │ │ ├── snippet32.hs │ │ │ ├── snippet33.hs │ │ │ ├── snippet34.hs │ │ │ ├── snippet35.hs │ │ │ ├── snippet36.hs │ │ │ └── snippet37.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ ├── snippet10.ml │ │ │ ├── snippet11.ml │ │ │ ├── snippet12.ml │ │ │ ├── snippet13.ml │ │ │ ├── snippet14.ml │ │ │ ├── snippet15.ml │ │ │ ├── snippet16.ml │ │ │ ├── snippet17.ml │ │ │ ├── snippet18.ml │ │ │ ├── snippet19.ml │ │ │ ├── snippet20.ml │ │ │ ├── snippet21.ml │ │ │ ├── snippet22.ml │ │ │ ├── snippet23.ml │ │ │ ├── snippet24.ml │ │ │ ├── snippet25.ml │ │ │ ├── snippet26.ml │ │ │ ├── snippet27.ml │ │ │ ├── snippet28.ml │ │ │ ├── snippet29.ml │ │ │ ├── snippet30.ml │ │ │ ├── snippet31.ml │ │ │ ├── snippet32.ml │ │ │ ├── snippet33.ml │ │ │ ├── snippet34.ml │ │ │ ├── snippet35.ml │ │ │ ├── snippet36.ml │ │ │ └── snippet37.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ ├── snippet10.re │ │ │ ├── snippet11.re │ │ │ ├── snippet12.re │ │ │ ├── snippet13.re │ │ │ ├── snippet14.re │ │ │ ├── snippet15.re │ │ │ ├── snippet16.re │ │ │ ├── snippet17.re │ │ │ ├── snippet18.re │ │ │ ├── snippet19.re │ │ │ ├── snippet20.re │ │ │ ├── snippet21.re │ │ │ ├── snippet22.re │ │ │ ├── snippet23.re │ │ │ ├── snippet24.re │ │ │ ├── snippet25.re │ │ │ ├── snippet26.re │ │ │ ├── snippet27.re │ │ │ ├── snippet28.re │ │ │ ├── snippet29.re │ │ │ ├── snippet30.re │ │ │ ├── snippet31.re │ │ │ ├── snippet32.re │ │ │ ├── snippet33.re │ │ │ ├── snippet34.re │ │ │ ├── snippet35.re │ │ │ ├── snippet36.re │ │ │ └── snippet37.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ ├── snippet10.scala │ │ │ ├── snippet11.scala │ │ │ ├── snippet12.scala │ │ │ ├── snippet13.scala │ │ │ ├── snippet14.scala │ │ │ ├── snippet15.scala │ │ │ ├── snippet16.scala │ │ │ ├── snippet17.scala │ │ │ ├── snippet18.scala │ │ │ ├── snippet19.scala │ │ │ ├── snippet20.scala │ │ │ ├── snippet21.scala │ │ │ ├── snippet22.scala │ │ │ ├── snippet23.scala │ │ │ ├── snippet24.scala │ │ │ ├── snippet25.scala │ │ │ ├── snippet26.scala │ │ │ ├── snippet27.scala │ │ │ ├── snippet28.scala │ │ │ ├── snippet29.scala │ │ │ ├── snippet30.scala │ │ │ ├── snippet31.scala │ │ │ ├── snippet32.scala │ │ │ ├── snippet33.scala │ │ │ ├── snippet34.scala │ │ │ ├── snippet35.scala │ │ │ ├── snippet36.scala │ │ │ └── snippet37.scala │ ├── images │ │ └── pair.jpg │ ├── simple-algebraic-data-types-zh-cn.tex │ └── simple-algebraic-data-types.tex ├── 1.7 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ ├── snippet10.hs │ │ │ ├── snippet11.hs │ │ │ ├── snippet12.hs │ │ │ ├── snippet13.hs │ │ │ ├── snippet14.hs │ │ │ ├── snippet15.hs │ │ │ ├── snippet16.hs │ │ │ ├── snippet17.hs │ │ │ ├── snippet18.hs │ │ │ ├── snippet19.hs │ │ │ ├── snippet20.hs │ │ │ ├── snippet21.hs │ │ │ ├── snippet22.hs │ │ │ ├── snippet23.hs │ │ │ ├── snippet24.hs │ │ │ ├── snippet25.hs │ │ │ ├── snippet26.hs │ │ │ ├── snippet27.hs │ │ │ ├── snippet28.hs │ │ │ ├── snippet29.hs │ │ │ ├── snippet30.hs │ │ │ ├── snippet31.hs │ │ │ ├── snippet32.hs │ │ │ ├── snippet33.hs │ │ │ ├── snippet34.hs │ │ │ └── snippet35.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ ├── snippet10.ml │ │ │ ├── snippet11.ml │ │ │ ├── snippet12.ml │ │ │ ├── snippet13.ml │ │ │ ├── snippet14.ml │ │ │ ├── snippet15.ml │ │ │ ├── snippet16.ml │ │ │ ├── snippet17.ml │ │ │ ├── snippet18.ml │ │ │ ├── snippet19.ml │ │ │ ├── snippet20.ml │ │ │ ├── snippet21.ml │ │ │ ├── snippet22.ml │ │ │ ├── snippet23.ml │ │ │ ├── snippet24.ml │ │ │ ├── snippet25.ml │ │ │ ├── snippet26.ml │ │ │ ├── snippet27.ml │ │ │ ├── snippet28.ml │ │ │ ├── snippet29.ml │ │ │ ├── snippet30.ml │ │ │ ├── snippet31.ml │ │ │ ├── snippet32.ml │ │ │ ├── snippet33.ml │ │ │ ├── snippet34.ml │ │ │ └── snippet35.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ ├── snippet10.re │ │ │ ├── snippet11.re │ │ │ ├── snippet12.re │ │ │ ├── snippet13.re │ │ │ ├── snippet14.re │ │ │ ├── snippet15.re │ │ │ ├── snippet16.re │ │ │ ├── snippet17.re │ │ │ ├── snippet18.re │ │ │ ├── snippet19.re │ │ │ ├── snippet20.re │ │ │ ├── snippet21.re │ │ │ ├── snippet22.re │ │ │ ├── snippet23.re │ │ │ ├── snippet24.re │ │ │ ├── snippet25.re │ │ │ ├── snippet26.re │ │ │ ├── snippet27.re │ │ │ ├── snippet28.re │ │ │ ├── snippet29.re │ │ │ ├── snippet30.re │ │ │ ├── snippet31.re │ │ │ ├── snippet32.re │ │ │ ├── snippet33.re │ │ │ ├── snippet34.re │ │ │ └── snippet35.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ ├── snippet10.scala │ │ │ ├── snippet11.scala │ │ │ ├── snippet12.scala │ │ │ ├── snippet13.scala │ │ │ ├── snippet14.scala │ │ │ ├── snippet15.scala │ │ │ ├── snippet16.scala │ │ │ ├── snippet17.scala │ │ │ ├── snippet18.scala │ │ │ ├── snippet19.scala │ │ │ ├── snippet20.scala │ │ │ ├── snippet21.scala │ │ │ ├── snippet22.scala │ │ │ ├── snippet23.scala │ │ │ ├── snippet24.scala │ │ │ ├── snippet25.scala │ │ │ ├── snippet26.scala │ │ │ ├── snippet27.scala │ │ │ ├── snippet28.scala │ │ │ ├── snippet29.scala │ │ │ ├── snippet30.scala │ │ │ ├── snippet31.scala │ │ │ ├── snippet32.scala │ │ │ ├── snippet33.scala │ │ │ ├── snippet34.scala │ │ │ └── snippet35.scala │ ├── functors-zh-cn.tex │ ├── functors.tex │ └── images │ │ ├── functor.jpg │ │ ├── functorcompos.jpg │ │ ├── functorid.jpg │ │ └── functormaybe.jpg ├── 1.8 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ ├── snippet10.hs │ │ │ ├── snippet11.hs │ │ │ ├── snippet12.hs │ │ │ ├── snippet13.hs │ │ │ ├── snippet14.hs │ │ │ ├── snippet15.hs │ │ │ ├── snippet16.hs │ │ │ ├── snippet17.hs │ │ │ ├── snippet18.hs │ │ │ ├── snippet19.hs │ │ │ ├── snippet20.hs │ │ │ ├── snippet21.hs │ │ │ ├── snippet22.hs │ │ │ ├── snippet23.hs │ │ │ ├── snippet24.hs │ │ │ ├── snippet25.hs │ │ │ ├── snippet26.hs │ │ │ ├── snippet27.hs │ │ │ ├── snippet28.hs │ │ │ ├── snippet29.hs │ │ │ └── snippet30.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ ├── snippet10.ml │ │ │ ├── snippet11.ml │ │ │ ├── snippet12.ml │ │ │ ├── snippet13.ml │ │ │ ├── snippet14.ml │ │ │ ├── snippet15.ml │ │ │ ├── snippet16.ml │ │ │ ├── snippet17.ml │ │ │ ├── snippet18.ml │ │ │ ├── snippet19.ml │ │ │ ├── snippet20.ml │ │ │ ├── snippet21.ml │ │ │ ├── snippet22.ml │ │ │ ├── snippet23.ml │ │ │ ├── snippet24.ml │ │ │ ├── snippet25.ml │ │ │ ├── snippet26.ml │ │ │ ├── snippet27.ml │ │ │ ├── snippet28.ml │ │ │ ├── snippet29.ml │ │ │ └── snippet30.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ ├── snippet10.re │ │ │ ├── snippet11.re │ │ │ ├── snippet12.re │ │ │ ├── snippet13.re │ │ │ ├── snippet14.re │ │ │ ├── snippet15.re │ │ │ ├── snippet16.re │ │ │ ├── snippet17.re │ │ │ ├── snippet18.re │ │ │ ├── snippet19.re │ │ │ ├── snippet20.re │ │ │ ├── snippet21.re │ │ │ ├── snippet22.re │ │ │ ├── snippet23.re │ │ │ ├── snippet24.re │ │ │ ├── snippet25.re │ │ │ ├── snippet26.re │ │ │ ├── snippet27.re │ │ │ ├── snippet28.re │ │ │ ├── snippet29.re │ │ │ └── snippet30.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ ├── snippet10.scala │ │ │ ├── snippet11.scala │ │ │ ├── snippet12.scala │ │ │ ├── snippet13.scala │ │ │ ├── snippet14.scala │ │ │ ├── snippet15.scala │ │ │ ├── snippet16.scala │ │ │ ├── snippet17.scala │ │ │ ├── snippet18.scala │ │ │ ├── snippet19.scala │ │ │ ├── snippet20.scala │ │ │ ├── snippet21.scala │ │ │ ├── snippet22.scala │ │ │ ├── snippet23.scala │ │ │ ├── snippet24.scala │ │ │ ├── snippet25.scala │ │ │ ├── snippet26.scala │ │ │ ├── snippet27.scala │ │ │ ├── snippet28.scala │ │ │ ├── snippet29.scala │ │ │ └── snippet30.scala │ ├── functoriality-zh-cn.tex │ ├── functoriality.tex │ └── images │ │ ├── bifunctor.jpg │ │ ├── bimap.jpg │ │ ├── contravariant.jpg │ │ ├── dimap.jpg │ │ ├── first.jpg │ │ └── second.jpg ├── 1.9 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ ├── snippet10.hs │ │ │ ├── snippet11.hs │ │ │ ├── snippet12.hs │ │ │ ├── snippet13.hs │ │ │ ├── snippet14.hs │ │ │ └── snippet15.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ ├── snippet10.ml │ │ │ ├── snippet11.ml │ │ │ ├── snippet12.ml │ │ │ ├── snippet13.ml │ │ │ ├── snippet14.ml │ │ │ └── snippet15.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ ├── snippet10.re │ │ │ ├── snippet11.re │ │ │ ├── snippet12.re │ │ │ ├── snippet13.re │ │ │ ├── snippet14.re │ │ │ └── snippet15.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ ├── snippet10.scala │ │ │ ├── snippet11.scala │ │ │ ├── snippet12.scala │ │ │ ├── snippet13.scala │ │ │ ├── snippet14.scala │ │ │ └── snippet15.scala │ ├── function-types-zh-cn.tex │ ├── function-types.tex │ └── images │ │ ├── functionpattern.jpg │ │ ├── functionranking.jpg │ │ ├── functionset.jpg │ │ ├── hom-set.jpg │ │ ├── set-hom-set.jpg │ │ └── universalfunctionobject.jpg ├── 2.1 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ └── snippet02.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ └── snippet02.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ └── snippet02.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ └── snippet02.scala │ ├── declarative-programming-zh-cn.tex │ ├── declarative-programming.tex │ └── images │ │ ├── asteroids.png │ │ ├── feynman.jpg │ │ ├── mortar.jpg │ │ ├── productranking.jpg │ │ └── snell.jpg ├── 2.2 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ ├── snippet10.hs │ │ │ ├── snippet11.hs │ │ │ ├── snippet12.hs │ │ │ ├── snippet13.hs │ │ │ ├── snippet14.hs │ │ │ ├── snippet15.hs │ │ │ ├── snippet16.hs │ │ │ ├── snippet17.hs │ │ │ ├── snippet18.hs │ │ │ └── snippet19.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ ├── snippet10.ml │ │ │ ├── snippet11.ml │ │ │ ├── snippet12.ml │ │ │ ├── snippet13.ml │ │ │ ├── snippet14.ml │ │ │ ├── snippet15.ml │ │ │ ├── snippet16.ml │ │ │ ├── snippet17.ml │ │ │ ├── snippet18.ml │ │ │ └── snippet19.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ ├── snippet10.re │ │ │ ├── snippet11.re │ │ │ ├── snippet12.re │ │ │ ├── snippet13.re │ │ │ ├── snippet14.re │ │ │ ├── snippet15.re │ │ │ ├── snippet16.re │ │ │ ├── snippet17.re │ │ │ ├── snippet18.re │ │ │ └── snippet19.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ ├── snippet10.scala │ │ │ ├── snippet11.scala │ │ │ ├── snippet12.scala │ │ │ ├── snippet13.scala │ │ │ ├── snippet14.scala │ │ │ ├── snippet15.scala │ │ │ ├── snippet16.scala │ │ │ ├── snippet17.scala │ │ │ ├── snippet18.scala │ │ │ └── snippet19.scala │ ├── images │ │ ├── classes.jpg │ │ ├── colimit.jpg │ │ ├── cone.jpg │ │ ├── conecommutativity.jpg │ │ ├── conenaturality.jpg │ │ ├── continuity.jpg │ │ ├── coproductranking.jpg │ │ ├── equalizercone.jpg │ │ ├── equilizerlimit.jpg │ │ ├── homsetmapping.jpg │ │ ├── natmapping.jpg │ │ ├── productcone.jpg │ │ ├── productpattern.jpg │ │ ├── productranking.jpg │ │ ├── pullbackcone.jpg │ │ ├── pullbacklimit.jpg │ │ ├── two.jpg │ │ └── twodelta.jpg │ └── limits-and-colimits.tex ├── 2.3 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ └── snippet10.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ └── snippet10.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ └── snippet10.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ └── snippet10.scala │ ├── free-monoids.tex │ └── images │ │ ├── bunnies.jpg │ │ ├── monoid-pattern.jpg │ │ └── monoid-ranking.jpg ├── 2.4 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ ├── snippet10.hs │ │ │ ├── snippet11.hs │ │ │ ├── snippet12.hs │ │ │ ├── snippet13.hs │ │ │ ├── snippet14.hs │ │ │ └── snippet15.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ ├── snippet10.ml │ │ │ ├── snippet11.ml │ │ │ ├── snippet12.ml │ │ │ ├── snippet13.ml │ │ │ ├── snippet14.ml │ │ │ └── snippet15.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ ├── snippet10.re │ │ │ ├── snippet11.re │ │ │ ├── snippet12.re │ │ │ ├── snippet13.re │ │ │ ├── snippet14.re │ │ │ └── snippet15.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ ├── snippet10.scala │ │ │ ├── snippet11.scala │ │ │ ├── snippet12.scala │ │ │ ├── snippet13.scala │ │ │ ├── snippet14.scala │ │ │ └── snippet15.scala │ ├── images │ │ ├── hom-functor.jpg │ │ └── hom-set.jpg │ └── representable-functors.tex ├── 2.5 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ └── snippet07.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ └── snippet07.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ └── snippet07.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ └── snippet07.scala │ ├── images │ │ ├── yoneda1.png │ │ ├── yoneda2.png │ │ ├── yoneda3.png │ │ ├── yoneda4.png │ │ └── yoneda5.png │ └── the-yoneda-lemma.tex ├── 2.6 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ └── snippet02.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ └── snippet02.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ └── snippet02.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ └── snippet02.scala │ ├── images │ │ ├── yoneda-embedding-2.jpg │ │ └── yoneda-embedding.jpg │ └── yoneda-embedding.tex ├── 3.1 │ ├── images │ │ ├── 3_naturality.jpg │ │ ├── productranking.jpg │ │ └── sheets.png │ └── its-all-about-morphisms.tex ├── 3.10 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ ├── snippet10.hs │ │ │ ├── snippet11.hs │ │ │ ├── snippet12.hs │ │ │ ├── snippet13.hs │ │ │ ├── snippet14.hs │ │ │ ├── snippet15.hs │ │ │ ├── snippet16.hs │ │ │ ├── snippet17.hs │ │ │ └── snippet18.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ ├── snippet10.ml │ │ │ ├── snippet11.ml │ │ │ ├── snippet12.ml │ │ │ ├── snippet13.ml │ │ │ ├── snippet14.ml │ │ │ ├── snippet15.ml │ │ │ ├── snippet16.ml │ │ │ ├── snippet17.ml │ │ │ └── snippet18.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ ├── snippet10.re │ │ │ ├── snippet11.re │ │ │ ├── snippet12.re │ │ │ ├── snippet13.re │ │ │ ├── snippet14.re │ │ │ ├── snippet15.re │ │ │ ├── snippet16.re │ │ │ ├── snippet17.re │ │ │ └── snippet18.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ ├── snippet10.scala │ │ │ ├── snippet11.scala │ │ │ ├── snippet12.scala │ │ │ ├── snippet13.scala │ │ │ ├── snippet14.scala │ │ │ ├── snippet15.scala │ │ │ ├── snippet16.scala │ │ │ ├── snippet17.scala │ │ │ └── snippet18.scala │ ├── ends-and-coends.tex │ └── images │ │ ├── end-1.jpg │ │ ├── end-2.jpg │ │ ├── end-21.jpg │ │ ├── end-31.jpg │ │ ├── end.jpg │ │ └── end1.jpg ├── 3.11 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ ├── snippet10.hs │ │ │ ├── snippet11.hs │ │ │ └── snippet12.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ ├── snippet10.ml │ │ │ ├── snippet11.ml │ │ │ └── snippet12.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ ├── snippet10.re │ │ │ ├── snippet11.re │ │ │ └── snippet12.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ ├── snippet10.scala │ │ │ ├── snippet11.scala │ │ │ └── snippet12.scala │ ├── images │ │ ├── kan10a.jpg │ │ ├── kan10b.jpg │ │ ├── kan112.jpg │ │ ├── kan12.jpg │ │ ├── kan13.jpg │ │ ├── kan14.jpg │ │ ├── kan15.jpg │ │ ├── kan2.jpg │ │ ├── kan3-e1492120491591.jpg │ │ ├── kan31-e1492120512209.jpg │ │ ├── kan5.jpg │ │ ├── kan6.jpg │ │ ├── kan7.jpg │ │ ├── kan81.jpg │ │ └── kan92.jpg │ └── kan-extensions.tex ├── 3.12 │ ├── enriched-categories.tex │ └── images │ │ ├── composition.jpg │ │ └── id.jpg ├── 3.13 │ ├── images │ │ ├── monomorphism.jpg │ │ ├── notmono.jpg │ │ ├── pullback.jpg │ │ ├── subsetinjection.jpg │ │ └── true.jpg │ └── topoi.tex ├── 3.14 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ └── snippet04.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ └── snippet04.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ └── snippet04.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ └── snippet04.scala │ ├── images │ │ ├── lawvere1.png │ │ └── liftpower.png │ └── lawvere-theories.tex ├── 3.15 │ ├── images │ │ ├── bicat.png │ │ ├── bimonad.png │ │ ├── compspan.png │ │ ├── monad.png │ │ ├── morphspan.png │ │ ├── pullspan.png │ │ ├── span.png │ │ ├── spanmonad.png │ │ ├── spanmul.png │ │ ├── spanunit.png │ │ └── twocat.png │ └── monads-monoids-and-categories.tex ├── 3.2 │ ├── adjunctions.tex │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ └── snippet09.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ └── snippet09.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ └── snippet09.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ └── snippet09.scala │ └── images │ │ ├── adj-1.jpg │ │ ├── adj-counit.jpg │ │ ├── adj-expo.jpg │ │ ├── adj-homsets.jpg │ │ ├── adj-product.jpg │ │ ├── adj-productcat.jpg │ │ └── adj-unit.jpg ├── 3.3 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ └── snippet02.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ └── snippet02.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ └── snippet02.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ └── snippet02.scala │ ├── free-forgetful-adjunctions.tex │ └── images │ │ ├── forgetful.jpg │ │ ├── forgettingmorphisms.jpg │ │ ├── freeimage.jpg │ │ └── freemonadjunction.jpg ├── 3.4 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ ├── snippet10.hs │ │ │ ├── snippet11.hs │ │ │ ├── snippet12.hs │ │ │ ├── snippet13.hs │ │ │ ├── snippet14.hs │ │ │ ├── snippet15.hs │ │ │ ├── snippet16.hs │ │ │ ├── snippet17.hs │ │ │ ├── snippet18.hs │ │ │ ├── snippet19.hs │ │ │ ├── snippet20.hs │ │ │ ├── snippet21.hs │ │ │ ├── snippet22.hs │ │ │ ├── snippet23.hs │ │ │ ├── snippet24.hs │ │ │ └── snippet25.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ ├── snippet10.ml │ │ │ ├── snippet11.ml │ │ │ ├── snippet12.ml │ │ │ ├── snippet13.ml │ │ │ ├── snippet14.ml │ │ │ ├── snippet15.ml │ │ │ ├── snippet16.ml │ │ │ ├── snippet17.ml │ │ │ ├── snippet18.ml │ │ │ ├── snippet19.ml │ │ │ ├── snippet20.ml │ │ │ ├── snippet21.ml │ │ │ ├── snippet22.ml │ │ │ ├── snippet23.ml │ │ │ ├── snippet24.ml │ │ │ └── snippet25.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ ├── snippet10.re │ │ │ ├── snippet11.re │ │ │ ├── snippet12.re │ │ │ ├── snippet13.re │ │ │ ├── snippet14.re │ │ │ ├── snippet15.re │ │ │ ├── snippet16.re │ │ │ ├── snippet17.re │ │ │ ├── snippet18.re │ │ │ ├── snippet19.re │ │ │ ├── snippet20.re │ │ │ ├── snippet21.re │ │ │ ├── snippet22.re │ │ │ ├── snippet23.re │ │ │ ├── snippet24.re │ │ │ └── snippet25.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ ├── snippet10.scala │ │ │ ├── snippet11.scala │ │ │ ├── snippet12.scala │ │ │ ├── snippet13.scala │ │ │ ├── snippet14.scala │ │ │ ├── snippet15.scala │ │ │ ├── snippet16.scala │ │ │ ├── snippet17.scala │ │ │ ├── snippet18.scala │ │ │ ├── snippet19.scala │ │ │ ├── snippet20.scala │ │ │ ├── snippet21.scala │ │ │ ├── snippet22.scala │ │ │ ├── snippet23.scala │ │ │ ├── snippet24.scala │ │ │ └── snippet25.scala │ └── monads-programmers-definition.tex ├── 3.5 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ ├── snippet10.hs │ │ │ ├── snippet11.hs │ │ │ ├── snippet12.hs │ │ │ ├── snippet13.hs │ │ │ ├── snippet14.hs │ │ │ ├── snippet15.hs │ │ │ ├── snippet16.hs │ │ │ ├── snippet17.hs │ │ │ ├── snippet18.hs │ │ │ ├── snippet19.hs │ │ │ ├── snippet20.hs │ │ │ ├── snippet21.hs │ │ │ ├── snippet22.hs │ │ │ ├── snippet23.hs │ │ │ ├── snippet24.hs │ │ │ ├── snippet25.hs │ │ │ ├── snippet26.hs │ │ │ ├── snippet27.hs │ │ │ ├── snippet28.hs │ │ │ ├── snippet29.hs │ │ │ ├── snippet30.hs │ │ │ ├── snippet31.hs │ │ │ ├── snippet32.hs │ │ │ ├── snippet33.hs │ │ │ ├── snippet34.hs │ │ │ ├── snippet35.hs │ │ │ ├── snippet36.hs │ │ │ └── snippet37.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ ├── snippet10.ml │ │ │ ├── snippet11.ml │ │ │ ├── snippet12.ml │ │ │ ├── snippet13.ml │ │ │ ├── snippet14.ml │ │ │ ├── snippet15.ml │ │ │ ├── snippet16.ml │ │ │ ├── snippet17.ml │ │ │ ├── snippet18.ml │ │ │ ├── snippet19.ml │ │ │ ├── snippet20.ml │ │ │ ├── snippet21.ml │ │ │ ├── snippet22.ml │ │ │ ├── snippet23.ml │ │ │ ├── snippet24.ml │ │ │ ├── snippet25.ml │ │ │ ├── snippet26.ml │ │ │ ├── snippet27.ml │ │ │ ├── snippet28.ml │ │ │ ├── snippet29.ml │ │ │ ├── snippet30.ml │ │ │ ├── snippet31.ml │ │ │ ├── snippet32.ml │ │ │ ├── snippet33.ml │ │ │ ├── snippet34.ml │ │ │ ├── snippet35.ml │ │ │ ├── snippet36.ml │ │ │ └── snippet37.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ ├── snippet10.re │ │ │ ├── snippet11.re │ │ │ ├── snippet12.re │ │ │ ├── snippet13.re │ │ │ ├── snippet14.re │ │ │ ├── snippet15.re │ │ │ ├── snippet16.re │ │ │ ├── snippet17.re │ │ │ ├── snippet18.re │ │ │ ├── snippet19.re │ │ │ ├── snippet20.re │ │ │ ├── snippet21.re │ │ │ ├── snippet22.re │ │ │ ├── snippet23.re │ │ │ ├── snippet24.re │ │ │ ├── snippet25.re │ │ │ ├── snippet26.re │ │ │ ├── snippet27.re │ │ │ ├── snippet28.re │ │ │ ├── snippet29.re │ │ │ ├── snippet30.re │ │ │ ├── snippet31.re │ │ │ ├── snippet32.re │ │ │ ├── snippet33.re │ │ │ ├── snippet34.re │ │ │ ├── snippet35.re │ │ │ ├── snippet36.re │ │ │ └── snippet37.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ ├── snippet10.scala │ │ │ ├── snippet11.scala │ │ │ ├── snippet12.scala │ │ │ ├── snippet13.scala │ │ │ ├── snippet14.scala │ │ │ ├── snippet15.scala │ │ │ ├── snippet16.scala │ │ │ ├── snippet17.scala │ │ │ ├── snippet18.scala │ │ │ ├── snippet19.scala │ │ │ ├── snippet20.scala │ │ │ ├── snippet21.scala │ │ │ ├── snippet22.scala │ │ │ ├── snippet23.scala │ │ │ ├── snippet24.scala │ │ │ ├── snippet25.scala │ │ │ ├── snippet26.scala │ │ │ ├── snippet27.scala │ │ │ ├── snippet28.scala │ │ │ ├── snippet29.scala │ │ │ ├── snippet30.scala │ │ │ ├── snippet31.scala │ │ │ ├── snippet32.scala │ │ │ ├── snippet33.scala │ │ │ ├── snippet34.scala │ │ │ ├── snippet35.scala │ │ │ ├── snippet36.scala │ │ │ └── snippet37.scala │ └── monads-and-effects.tex ├── 3.6 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ ├── snippet10.hs │ │ │ ├── snippet11.hs │ │ │ ├── snippet12.hs │ │ │ ├── snippet13.hs │ │ │ ├── snippet14.hs │ │ │ ├── snippet15.hs │ │ │ ├── snippet16.hs │ │ │ ├── snippet17.hs │ │ │ ├── snippet18.hs │ │ │ ├── snippet19.hs │ │ │ ├── snippet20.hs │ │ │ ├── snippet21.hs │ │ │ ├── snippet22.hs │ │ │ ├── snippet23.hs │ │ │ ├── snippet24.hs │ │ │ └── snippet25.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ ├── snippet10.ml │ │ │ ├── snippet11.ml │ │ │ ├── snippet12.ml │ │ │ ├── snippet13.ml │ │ │ ├── snippet14.ml │ │ │ ├── snippet15.ml │ │ │ ├── snippet16.ml │ │ │ ├── snippet17.ml │ │ │ ├── snippet18.ml │ │ │ ├── snippet19.ml │ │ │ ├── snippet20.ml │ │ │ ├── snippet21.ml │ │ │ ├── snippet22.ml │ │ │ ├── snippet23.ml │ │ │ ├── snippet24.ml │ │ │ └── snippet25.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ ├── snippet10.re │ │ │ ├── snippet11.re │ │ │ ├── snippet12.re │ │ │ ├── snippet13.re │ │ │ ├── snippet14.re │ │ │ ├── snippet15.re │ │ │ ├── snippet16.re │ │ │ ├── snippet17.re │ │ │ ├── snippet18.re │ │ │ ├── snippet19.re │ │ │ ├── snippet20.re │ │ │ ├── snippet21.re │ │ │ ├── snippet22.re │ │ │ ├── snippet23.re │ │ │ ├── snippet24.re │ │ │ └── snippet25.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ ├── snippet10.scala │ │ │ ├── snippet11.scala │ │ │ ├── snippet12.scala │ │ │ ├── snippet13.scala │ │ │ ├── snippet14.scala │ │ │ ├── snippet15.scala │ │ │ ├── snippet16.scala │ │ │ ├── snippet17.scala │ │ │ ├── snippet18.scala │ │ │ ├── snippet19.scala │ │ │ ├── snippet20.scala │ │ │ ├── snippet21.scala │ │ │ ├── snippet22.scala │ │ │ ├── snippet23.scala │ │ │ ├── snippet24.scala │ │ │ └── snippet25.scala │ ├── images │ │ ├── assoc.png │ │ ├── assoc1.png │ │ ├── assoc2.png │ │ ├── assocmon.png │ │ ├── assoctensor.jpg │ │ ├── exptree.png │ │ ├── horizcomp.png │ │ ├── monoid-1.jpg │ │ ├── unitlawcomp-1.png │ │ ├── unitlawcomp.png │ │ └── unitmon.jpg │ └── monads-categorically.tex ├── 3.7 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ ├── snippet10.hs │ │ │ ├── snippet11.hs │ │ │ ├── snippet12.hs │ │ │ ├── snippet13.hs │ │ │ ├── snippet14.hs │ │ │ ├── snippet15.hs │ │ │ ├── snippet16.hs │ │ │ ├── snippet17.hs │ │ │ ├── snippet18.hs │ │ │ ├── snippet19.hs │ │ │ ├── snippet20.hs │ │ │ ├── snippet21.hs │ │ │ ├── snippet22.hs │ │ │ ├── snippet23.hs │ │ │ ├── snippet24.hs │ │ │ ├── snippet25.hs │ │ │ ├── snippet26.hs │ │ │ ├── snippet27.hs │ │ │ ├── snippet28.hs │ │ │ ├── snippet29.hs │ │ │ ├── snippet30.hs │ │ │ ├── snippet31.hs │ │ │ ├── snippet32.hs │ │ │ ├── snippet33.hs │ │ │ ├── snippet34.hs │ │ │ ├── snippet35.hs │ │ │ ├── snippet36.hs │ │ │ ├── snippet37.hs │ │ │ ├── snippet38.hs │ │ │ └── snippet39.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ ├── snippet10.ml │ │ │ ├── snippet11.ml │ │ │ ├── snippet12.ml │ │ │ ├── snippet13.ml │ │ │ ├── snippet14.ml │ │ │ ├── snippet15.ml │ │ │ ├── snippet16.ml │ │ │ ├── snippet17.ml │ │ │ ├── snippet18.ml │ │ │ ├── snippet19.ml │ │ │ ├── snippet20.ml │ │ │ ├── snippet21.ml │ │ │ ├── snippet22.ml │ │ │ ├── snippet23.ml │ │ │ ├── snippet24.ml │ │ │ ├── snippet25.ml │ │ │ ├── snippet26.ml │ │ │ ├── snippet27.ml │ │ │ ├── snippet28.ml │ │ │ ├── snippet29.ml │ │ │ ├── snippet30.ml │ │ │ ├── snippet31.ml │ │ │ ├── snippet32.ml │ │ │ ├── snippet33.ml │ │ │ ├── snippet34.ml │ │ │ ├── snippet35.ml │ │ │ ├── snippet36.ml │ │ │ ├── snippet37.ml │ │ │ ├── snippet38.ml │ │ │ └── snippet39.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ ├── snippet10.re │ │ │ ├── snippet11.re │ │ │ ├── snippet12.re │ │ │ ├── snippet13.re │ │ │ ├── snippet14.re │ │ │ ├── snippet15.re │ │ │ ├── snippet16.re │ │ │ ├── snippet17.re │ │ │ ├── snippet18.re │ │ │ ├── snippet19.re │ │ │ ├── snippet20.re │ │ │ ├── snippet21.re │ │ │ ├── snippet22.re │ │ │ ├── snippet23.re │ │ │ ├── snippet24.re │ │ │ ├── snippet25.re │ │ │ ├── snippet26.re │ │ │ ├── snippet27.re │ │ │ ├── snippet28.re │ │ │ ├── snippet29.re │ │ │ ├── snippet30.re │ │ │ ├── snippet31.re │ │ │ ├── snippet32.re │ │ │ ├── snippet33.re │ │ │ ├── snippet34.re │ │ │ ├── snippet35.re │ │ │ ├── snippet36.re │ │ │ ├── snippet37.re │ │ │ ├── snippet38.re │ │ │ └── snippet39.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ ├── snippet10.scala │ │ │ ├── snippet11.scala │ │ │ ├── snippet12.scala │ │ │ ├── snippet13.scala │ │ │ ├── snippet14.scala │ │ │ ├── snippet15.scala │ │ │ ├── snippet16.scala │ │ │ ├── snippet17.scala │ │ │ ├── snippet18.scala │ │ │ ├── snippet19.scala │ │ │ ├── snippet20.scala │ │ │ ├── snippet21.scala │ │ │ ├── snippet22.scala │ │ │ ├── snippet23.scala │ │ │ ├── snippet24.scala │ │ │ ├── snippet25.scala │ │ │ ├── snippet26.scala │ │ │ ├── snippet27.scala │ │ │ ├── snippet28.scala │ │ │ ├── snippet29.scala │ │ │ ├── snippet30.scala │ │ │ ├── snippet31.scala │ │ │ ├── snippet32.scala │ │ │ ├── snippet33.scala │ │ │ ├── snippet34.scala │ │ │ ├── snippet35.scala │ │ │ ├── snippet36.scala │ │ │ ├── snippet37.scala │ │ │ ├── snippet38.scala │ │ │ └── snippet39.scala │ └── comonads.tex ├── 3.8 │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ ├── snippet10.hs │ │ │ ├── snippet11.hs │ │ │ ├── snippet12.hs │ │ │ ├── snippet13.hs │ │ │ ├── snippet14.hs │ │ │ ├── snippet15.hs │ │ │ ├── snippet16.hs │ │ │ ├── snippet17.hs │ │ │ ├── snippet18.hs │ │ │ ├── snippet19.hs │ │ │ ├── snippet20.hs │ │ │ ├── snippet21.hs │ │ │ ├── snippet22.hs │ │ │ ├── snippet23.hs │ │ │ ├── snippet24.hs │ │ │ ├── snippet25.hs │ │ │ ├── snippet26.hs │ │ │ ├── snippet27.hs │ │ │ ├── snippet28.hs │ │ │ ├── snippet29.hs │ │ │ ├── snippet30.hs │ │ │ ├── snippet31.hs │ │ │ ├── snippet32.hs │ │ │ ├── snippet33.hs │ │ │ ├── snippet34.hs │ │ │ └── snippet35.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ ├── snippet10.ml │ │ │ ├── snippet11.ml │ │ │ ├── snippet12.ml │ │ │ ├── snippet13.ml │ │ │ ├── snippet14.ml │ │ │ ├── snippet15.ml │ │ │ ├── snippet16.ml │ │ │ ├── snippet17.ml │ │ │ ├── snippet18.ml │ │ │ ├── snippet19.ml │ │ │ ├── snippet20.ml │ │ │ ├── snippet21.ml │ │ │ ├── snippet22.ml │ │ │ ├── snippet23.ml │ │ │ ├── snippet24.ml │ │ │ ├── snippet25.ml │ │ │ ├── snippet26.ml │ │ │ ├── snippet27.ml │ │ │ ├── snippet28.ml │ │ │ ├── snippet29.ml │ │ │ ├── snippet30.ml │ │ │ ├── snippet31.ml │ │ │ ├── snippet32.ml │ │ │ ├── snippet33.ml │ │ │ ├── snippet34.ml │ │ │ └── snippet35.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ ├── snippet10.re │ │ │ ├── snippet11.re │ │ │ ├── snippet12.re │ │ │ ├── snippet13.re │ │ │ ├── snippet14.re │ │ │ ├── snippet15.re │ │ │ ├── snippet16.re │ │ │ ├── snippet17.re │ │ │ ├── snippet18.re │ │ │ ├── snippet19.re │ │ │ ├── snippet20.re │ │ │ ├── snippet21.re │ │ │ ├── snippet22.re │ │ │ ├── snippet23.re │ │ │ ├── snippet24.re │ │ │ ├── snippet25.re │ │ │ ├── snippet26.re │ │ │ ├── snippet27.re │ │ │ ├── snippet28.re │ │ │ ├── snippet29.re │ │ │ ├── snippet30.re │ │ │ ├── snippet31.re │ │ │ ├── snippet32.re │ │ │ ├── snippet33.re │ │ │ ├── snippet34.re │ │ │ └── snippet35.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ ├── snippet10.scala │ │ │ ├── snippet11.scala │ │ │ ├── snippet12.scala │ │ │ ├── snippet13.scala │ │ │ ├── snippet14.scala │ │ │ ├── snippet15.scala │ │ │ ├── snippet16.scala │ │ │ ├── snippet17.scala │ │ │ ├── snippet18.scala │ │ │ ├── snippet19.scala │ │ │ ├── snippet20.scala │ │ │ ├── snippet21.scala │ │ │ ├── snippet22.scala │ │ │ ├── snippet23.scala │ │ │ ├── snippet24.scala │ │ │ ├── snippet25.scala │ │ │ ├── snippet26.scala │ │ │ ├── snippet27.scala │ │ │ ├── snippet28.scala │ │ │ ├── snippet29.scala │ │ │ ├── snippet30.scala │ │ │ ├── snippet31.scala │ │ │ ├── snippet32.scala │ │ │ ├── snippet33.scala │ │ │ ├── snippet34.scala │ │ │ └── snippet35.scala │ ├── f-algebras.tex │ └── images │ │ ├── alg.png │ │ ├── alg2.png │ │ ├── alg3.png │ │ ├── alg3a.png │ │ ├── alg4.png │ │ ├── alg5.png │ │ ├── alg6.png │ │ └── alg7.png ├── 3.9 │ ├── algebras-for-monads.tex │ ├── code │ │ ├── haskell │ │ │ ├── snippet01.hs │ │ │ ├── snippet02.hs │ │ │ ├── snippet03.hs │ │ │ ├── snippet04.hs │ │ │ ├── snippet05.hs │ │ │ ├── snippet06.hs │ │ │ ├── snippet07.hs │ │ │ ├── snippet08.hs │ │ │ ├── snippet09.hs │ │ │ ├── snippet10.hs │ │ │ ├── snippet11.hs │ │ │ ├── snippet12.hs │ │ │ ├── snippet13.hs │ │ │ ├── snippet14.hs │ │ │ └── snippet15.hs │ │ ├── ocaml │ │ │ ├── snippet01.ml │ │ │ ├── snippet02.ml │ │ │ ├── snippet03.ml │ │ │ ├── snippet04.ml │ │ │ ├── snippet05.ml │ │ │ ├── snippet06.ml │ │ │ ├── snippet07.ml │ │ │ ├── snippet08.ml │ │ │ ├── snippet09.ml │ │ │ ├── snippet10.ml │ │ │ ├── snippet11.ml │ │ │ ├── snippet12.ml │ │ │ ├── snippet13.ml │ │ │ ├── snippet14.ml │ │ │ └── snippet15.ml │ │ ├── reason │ │ │ ├── snippet01.re │ │ │ ├── snippet02.re │ │ │ ├── snippet03.re │ │ │ ├── snippet04.re │ │ │ ├── snippet05.re │ │ │ ├── snippet06.re │ │ │ ├── snippet07.re │ │ │ ├── snippet08.re │ │ │ ├── snippet09.re │ │ │ ├── snippet10.re │ │ │ ├── snippet11.re │ │ │ ├── snippet12.re │ │ │ ├── snippet13.re │ │ │ ├── snippet14.re │ │ │ └── snippet15.re │ │ └── scala │ │ │ ├── snippet01.scala │ │ │ ├── snippet02.scala │ │ │ ├── snippet03.scala │ │ │ ├── snippet04.scala │ │ │ ├── snippet05.scala │ │ │ ├── snippet06.scala │ │ │ ├── snippet07.scala │ │ │ ├── snippet08.scala │ │ │ ├── snippet09.scala │ │ │ ├── snippet10.scala │ │ │ ├── snippet11.scala │ │ │ ├── snippet12.scala │ │ │ ├── snippet13.scala │ │ │ ├── snippet14.scala │ │ │ └── snippet15.scala │ └── images │ │ └── pigalg.png ├── editor-note.tex ├── ocaml │ ├── colophon.tex │ └── editor-note.tex ├── reason │ ├── colophon.tex │ └── editor-note.tex └── scala │ ├── colophon.tex │ └── editor-note.tex ├── cover ├── bartosz.jpg ├── blurb.tex ├── bunnies.png ├── cover-hardcover-ocaml.tex ├── cover-hardcover-reason.tex ├── cover-hardcover-scala.tex ├── cover-hardcover.tex ├── cover-paperback-ocaml.tex ├── cover-paperback-reason.tex ├── cover-paperback-scala.tex ├── cover-paperback.tex ├── piggie.png ├── ribbon-ocaml.tex ├── ribbon-reason.tex └── ribbon-scala.tex ├── ctfp-print-ocaml.tex ├── ctfp-print-reason.tex ├── ctfp-print-scala.tex ├── ctfp-print-zh-cn.tex ├── ctfp-print.tex ├── ctfp-reader-ocaml.tex ├── ctfp-reader-reason.tex ├── ctfp-reader-scala.tex ├── ctfp-reader-zh-cn.tex ├── ctfp-reader.tex ├── ctfp-zh-cn.tex ├── ctfp.tex ├── fig └── icons │ ├── by.pdf │ ├── cc.pdf │ ├── haskell.png │ ├── ocaml.png │ ├── reason.png │ ├── sa.pdf │ └── scala.png ├── free-software.tex ├── half-title.tex ├── index.tex ├── opt-ocaml.tex ├── opt-print-ustrade.tex ├── opt-reader-10in.tex ├── opt-reason.tex ├── opt-scala.tex ├── postamble.tex ├── preamble-zh-cn.tex ├── preamble.tex ├── scraper.py └── version.tex /.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/.editorconfig -------------------------------------------------------------------------------- /.envrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/.envrc -------------------------------------------------------------------------------- /.github/settings.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/.github/settings.yml -------------------------------------------------------------------------------- /.github/workflows/nix-flake-check.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/.github/workflows/nix-flake-check.yaml -------------------------------------------------------------------------------- /.github/workflows/nix-fmt-checks.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/.github/workflows/nix-fmt-checks.yaml -------------------------------------------------------------------------------- /.github/workflows/prettier-checks.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/.github/workflows/prettier-checks.yaml -------------------------------------------------------------------------------- /.github/workflows/release.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/.github/workflows/release.yaml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/.gitignore -------------------------------------------------------------------------------- /.latexindent.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/.latexindent.yaml -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/.prettierignore -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "proseWrap": "always" 3 | } 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/LICENSE -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/Makefile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/README.md -------------------------------------------------------------------------------- /errata-1.0.0.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/errata-1.0.0.md -------------------------------------------------------------------------------- /errata-1.3.0.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/errata-1.3.0.md -------------------------------------------------------------------------------- /errata-scala.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/errata-scala.md -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/flake.lock -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/flake.nix -------------------------------------------------------------------------------- /src/acknowledgments.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/acknowledgments.tex -------------------------------------------------------------------------------- /src/category.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/category.tex -------------------------------------------------------------------------------- /src/colophon.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/colophon.tex -------------------------------------------------------------------------------- /src/content/0.0/images/img_1299.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/0.0/images/img_1299.jpg -------------------------------------------------------------------------------- /src/content/0.0/preface-zh-cn.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/0.0/preface-zh-cn.tex -------------------------------------------------------------------------------- /src/content/0.0/preface.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/0.0/preface.tex -------------------------------------------------------------------------------- /src/content/1.1/code/haskell/snippet01.hs: -------------------------------------------------------------------------------- 1 | f :: A -> B -------------------------------------------------------------------------------- /src/content/1.1/code/haskell/snippet02.hs: -------------------------------------------------------------------------------- 1 | g :: B -> C -------------------------------------------------------------------------------- /src/content/1.1/code/haskell/snippet03.hs: -------------------------------------------------------------------------------- 1 | g . f -------------------------------------------------------------------------------- /src/content/1.1/code/haskell/snippet04.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.1/code/haskell/snippet04.hs -------------------------------------------------------------------------------- /src/content/1.1/code/haskell/snippet05.hs: -------------------------------------------------------------------------------- 1 | id :: a -> a 2 | id x = x -------------------------------------------------------------------------------- /src/content/1.1/code/haskell/snippet06.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.1/code/haskell/snippet06.hs -------------------------------------------------------------------------------- /src/content/1.1/code/ocaml/snippet01.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.1/code/ocaml/snippet01.ml -------------------------------------------------------------------------------- /src/content/1.1/code/ocaml/snippet02.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.1/code/ocaml/snippet02.ml -------------------------------------------------------------------------------- /src/content/1.1/code/ocaml/snippet03.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.1/code/ocaml/snippet03.ml -------------------------------------------------------------------------------- /src/content/1.1/code/ocaml/snippet04.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.1/code/ocaml/snippet04.ml -------------------------------------------------------------------------------- /src/content/1.1/code/ocaml/snippet05.ml: -------------------------------------------------------------------------------- 1 | let id x = x 2 | -------------------------------------------------------------------------------- /src/content/1.1/code/ocaml/snippet06.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.1/code/ocaml/snippet06.ml -------------------------------------------------------------------------------- /src/content/1.1/code/reason/snippet01.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.1/code/reason/snippet01.re -------------------------------------------------------------------------------- /src/content/1.1/code/reason/snippet02.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.1/code/reason/snippet02.re -------------------------------------------------------------------------------- /src/content/1.1/code/reason/snippet03.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.1/code/reason/snippet03.re -------------------------------------------------------------------------------- /src/content/1.1/code/reason/snippet04.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.1/code/reason/snippet04.re -------------------------------------------------------------------------------- /src/content/1.1/code/reason/snippet05.re: -------------------------------------------------------------------------------- 1 | let id = x => x; 2 | -------------------------------------------------------------------------------- /src/content/1.1/code/reason/snippet06.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.1/code/reason/snippet06.re -------------------------------------------------------------------------------- /src/content/1.1/code/scala/snippet01.scala: -------------------------------------------------------------------------------- 1 | val f: A => B -------------------------------------------------------------------------------- /src/content/1.1/code/scala/snippet02.scala: -------------------------------------------------------------------------------- 1 | val g: B => C -------------------------------------------------------------------------------- /src/content/1.1/code/scala/snippet03.scala: -------------------------------------------------------------------------------- 1 | g compose f -------------------------------------------------------------------------------- /src/content/1.1/code/scala/snippet05.scala: -------------------------------------------------------------------------------- 1 | def identity[A](a: A): A = a -------------------------------------------------------------------------------- /src/content/1.1/images/img_1330.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.1/images/img_1330.jpg -------------------------------------------------------------------------------- /src/content/1.10/code/haskell/snippet01.hs: -------------------------------------------------------------------------------- 1 | alpha :: forall a . F a -> G a -------------------------------------------------------------------------------- /src/content/1.10/code/haskell/snippet02.hs: -------------------------------------------------------------------------------- 1 | alpha :: F a -> G a -------------------------------------------------------------------------------- /src/content/1.10/code/haskell/snippet03.hs: -------------------------------------------------------------------------------- 1 | alpha :: F a -> G a -------------------------------------------------------------------------------- /src/content/1.10/code/haskell/snippet14.hs: -------------------------------------------------------------------------------- 1 | length :: [a] -> Int -------------------------------------------------------------------------------- /src/content/1.10/code/haskell/snippet18.hs: -------------------------------------------------------------------------------- 1 | alpha :: Reader () a -> Maybe a -------------------------------------------------------------------------------- /src/content/1.10/code/haskell/snippet19.hs: -------------------------------------------------------------------------------- 1 | dumb (Reader _) = Nothing -------------------------------------------------------------------------------- /src/content/1.10/code/haskell/snippet20.hs: -------------------------------------------------------------------------------- 1 | obvious (Reader g) = Just (g ()) -------------------------------------------------------------------------------- /src/content/1.10/code/haskell/snippet23.hs: -------------------------------------------------------------------------------- 1 | predToStr (Op f) = Op (\x -> if f x then "T" else "F") -------------------------------------------------------------------------------- /src/content/1.10/code/haskell/snippet26.hs: -------------------------------------------------------------------------------- 1 | a -> a -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet01.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet01.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet02.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet02.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet03.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet03.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet04.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet04.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet05.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet05.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet06.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet06.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet07.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet07.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet08.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet08.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet09.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet09.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet10.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet10.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet11.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet11.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet12.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet12.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet13.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet13.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet14.ml: -------------------------------------------------------------------------------- 1 | val length : 'a list -> int 2 | -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet15.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet15.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet16.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet16.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet17.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet17.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet18.ml: -------------------------------------------------------------------------------- 1 | val alpha : (unit, 'a) reader -> 'a option 2 | -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet19.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet19.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet20.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet20.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet21.ml: -------------------------------------------------------------------------------- 1 | type ('r, 'a) op = Op of ('a -> 'r) 2 | -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet22.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet22.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet23.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet23.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet24.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet24.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet25.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet25.ml -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet26.ml: -------------------------------------------------------------------------------- 1 | 'a -> 'a 2 | -------------------------------------------------------------------------------- /src/content/1.10/code/ocaml/snippet27.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/ocaml/snippet27.ml -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet01.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet01.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet02.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet02.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet03.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet03.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet04.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet04.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet05.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet05.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet06.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet06.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet07.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet07.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet08.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet08.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet09.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet09.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet10.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet10.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet11.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet11.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet12.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet12.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet13.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet13.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet14.re: -------------------------------------------------------------------------------- 1 | let length: list('a) => int; 2 | -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet15.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet15.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet16.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet16.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet17.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet17.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet18.re: -------------------------------------------------------------------------------- 1 | let alpha: reader(unit, 'a) => option('a); 2 | -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet19.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet19.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet20.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet20.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet21.re: -------------------------------------------------------------------------------- 1 | type op('r, 'a) = 2 | | Op('a => 'r); 3 | -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet22.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet22.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet23.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet23.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet24.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet24.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet25.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet25.re -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet26.re: -------------------------------------------------------------------------------- 1 | 'a => 'a -------------------------------------------------------------------------------- /src/content/1.10/code/reason/snippet27.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/code/reason/snippet27.re -------------------------------------------------------------------------------- /src/content/1.10/code/scala/snippet02.scala: -------------------------------------------------------------------------------- 1 | val alpha: F[A] => G[A] -------------------------------------------------------------------------------- /src/content/1.10/code/scala/snippet03.scala: -------------------------------------------------------------------------------- 1 | val alpha: F[A] => G[A] -------------------------------------------------------------------------------- /src/content/1.10/code/scala/snippet14.scala: -------------------------------------------------------------------------------- 1 | def length[A]: List[A] => Int -------------------------------------------------------------------------------- /src/content/1.10/code/scala/snippet16.scala: -------------------------------------------------------------------------------- 1 | case class Reader[E, A](run: E => A) -------------------------------------------------------------------------------- /src/content/1.10/code/scala/snippet18.scala: -------------------------------------------------------------------------------- 1 | def alpha[A]: Reader[Unit, A] => Option[A] -------------------------------------------------------------------------------- /src/content/1.10/code/scala/snippet21.scala: -------------------------------------------------------------------------------- 1 | case class Op[R, A](f: A => R) -------------------------------------------------------------------------------- /src/content/1.10/code/scala/snippet26.scala: -------------------------------------------------------------------------------- 1 | A => A -------------------------------------------------------------------------------- /src/content/1.10/images/10_horizontal.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/images/10_horizontal.jpg -------------------------------------------------------------------------------- /src/content/1.10/images/1_functors.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/images/1_functors.jpg -------------------------------------------------------------------------------- /src/content/1.10/images/2_natcomp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/images/2_natcomp.jpg -------------------------------------------------------------------------------- /src/content/1.10/images/3_naturality.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/images/3_naturality.jpg -------------------------------------------------------------------------------- /src/content/1.10/images/4_transport.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/images/4_transport.jpg -------------------------------------------------------------------------------- /src/content/1.10/images/5_vertical.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/images/5_vertical.jpg -------------------------------------------------------------------------------- /src/content/1.10/images/6a_vertical.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/images/6a_vertical.jpg -------------------------------------------------------------------------------- /src/content/1.10/images/7_cathomset.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/images/7_cathomset.jpg -------------------------------------------------------------------------------- /src/content/1.10/images/8_cat-2-cat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/images/8_cat-2-cat.jpg -------------------------------------------------------------------------------- /src/content/1.10/images/9_horizontal.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/images/9_horizontal.jpg -------------------------------------------------------------------------------- /src/content/1.10/images/naturality.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/images/naturality.jpg -------------------------------------------------------------------------------- /src/content/1.10/images/sideways.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.10/images/sideways.jpg -------------------------------------------------------------------------------- /src/content/1.2/code/haskell/snippet01.hs: -------------------------------------------------------------------------------- 1 | x :: Integer -------------------------------------------------------------------------------- /src/content/1.2/code/haskell/snippet02.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/haskell/snippet02.hs -------------------------------------------------------------------------------- /src/content/1.2/code/haskell/snippet03.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/haskell/snippet03.hs -------------------------------------------------------------------------------- /src/content/1.2/code/haskell/snippet04.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/haskell/snippet04.hs -------------------------------------------------------------------------------- /src/content/1.2/code/haskell/snippet05.hs: -------------------------------------------------------------------------------- 1 | fact n = product [1..n] -------------------------------------------------------------------------------- /src/content/1.2/code/haskell/snippet06.hs: -------------------------------------------------------------------------------- 1 | absurd :: Void -> a -------------------------------------------------------------------------------- /src/content/1.2/code/haskell/snippet07.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/haskell/snippet07.hs -------------------------------------------------------------------------------- /src/content/1.2/code/haskell/snippet08.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/haskell/snippet08.hs -------------------------------------------------------------------------------- /src/content/1.2/code/haskell/snippet09.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/haskell/snippet09.hs -------------------------------------------------------------------------------- /src/content/1.2/code/haskell/snippet10.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/haskell/snippet10.hs -------------------------------------------------------------------------------- /src/content/1.2/code/haskell/snippet11.hs: -------------------------------------------------------------------------------- 1 | data Bool = True | False -------------------------------------------------------------------------------- /src/content/1.2/code/ocaml/snippet01.ml: -------------------------------------------------------------------------------- 1 | module type Chapter2_DeclareVariable = sig 2 | val x : int 3 | end 4 | -------------------------------------------------------------------------------- /src/content/1.2/code/ocaml/snippet010.ml: -------------------------------------------------------------------------------- 1 | let unit _ = () 2 | -------------------------------------------------------------------------------- /src/content/1.2/code/ocaml/snippet011.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/ocaml/snippet011.ml -------------------------------------------------------------------------------- /src/content/1.2/code/ocaml/snippet02.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/ocaml/snippet02.ml -------------------------------------------------------------------------------- /src/content/1.2/code/ocaml/snippet03.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/ocaml/snippet03.ml -------------------------------------------------------------------------------- /src/content/1.2/code/ocaml/snippet04.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/ocaml/snippet04.ml -------------------------------------------------------------------------------- /src/content/1.2/code/ocaml/snippet05.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/ocaml/snippet05.ml -------------------------------------------------------------------------------- /src/content/1.2/code/ocaml/snippet06.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/ocaml/snippet06.ml -------------------------------------------------------------------------------- /src/content/1.2/code/ocaml/snippet07.ml: -------------------------------------------------------------------------------- 1 | let f44 () : int = 44 2 | -------------------------------------------------------------------------------- /src/content/1.2/code/ocaml/snippet08.ml: -------------------------------------------------------------------------------- 1 | let f_int (x : int) = () 2 | -------------------------------------------------------------------------------- /src/content/1.2/code/ocaml/snippet09.ml: -------------------------------------------------------------------------------- 1 | let f_int (_ : int) = () 2 | -------------------------------------------------------------------------------- /src/content/1.2/code/ocaml/snippet10.ml: -------------------------------------------------------------------------------- 1 | let unit _ = () 2 | -------------------------------------------------------------------------------- /src/content/1.2/code/ocaml/snippet11.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/ocaml/snippet11.ml -------------------------------------------------------------------------------- /src/content/1.2/code/reason/snippet01.re: -------------------------------------------------------------------------------- 1 | module type Chapter2_DeclareVariable = {let x: int;}; 2 | -------------------------------------------------------------------------------- /src/content/1.2/code/reason/snippet010.re: -------------------------------------------------------------------------------- 1 | let unit = _ => (); 2 | -------------------------------------------------------------------------------- /src/content/1.2/code/reason/snippet011.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/reason/snippet011.re -------------------------------------------------------------------------------- /src/content/1.2/code/reason/snippet02.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/reason/snippet02.re -------------------------------------------------------------------------------- /src/content/1.2/code/reason/snippet03.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/reason/snippet03.re -------------------------------------------------------------------------------- /src/content/1.2/code/reason/snippet04.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/reason/snippet04.re -------------------------------------------------------------------------------- /src/content/1.2/code/reason/snippet05.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/reason/snippet05.re -------------------------------------------------------------------------------- /src/content/1.2/code/reason/snippet06.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/reason/snippet06.re -------------------------------------------------------------------------------- /src/content/1.2/code/reason/snippet07.re: -------------------------------------------------------------------------------- 1 | let f44 = (): int => 44; 2 | -------------------------------------------------------------------------------- /src/content/1.2/code/reason/snippet08.re: -------------------------------------------------------------------------------- 1 | let f_int = (x: int) => (); 2 | -------------------------------------------------------------------------------- /src/content/1.2/code/reason/snippet09.re: -------------------------------------------------------------------------------- 1 | let f_int = (_: int) => (); 2 | -------------------------------------------------------------------------------- /src/content/1.2/code/reason/snippet10.re: -------------------------------------------------------------------------------- 1 | let unit = _ => (); 2 | -------------------------------------------------------------------------------- /src/content/1.2/code/reason/snippet11.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/code/reason/snippet11.re -------------------------------------------------------------------------------- /src/content/1.2/code/scala/snippet01.scala: -------------------------------------------------------------------------------- 1 | val x: BigInt -------------------------------------------------------------------------------- /src/content/1.2/code/scala/snippet05.scala: -------------------------------------------------------------------------------- 1 | val fact = (n: Int) => (1 to n).product -------------------------------------------------------------------------------- /src/content/1.2/code/scala/snippet06.scala: -------------------------------------------------------------------------------- 1 | def absurd[A]: Nothing => A -------------------------------------------------------------------------------- /src/content/1.2/images/img_1329.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/images/img_1329.jpg -------------------------------------------------------------------------------- /src/content/1.2/types-and-functions.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.2/types-and-functions.tex -------------------------------------------------------------------------------- /src/content/1.3/code/haskell/snippet01.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.3/code/haskell/snippet01.hs -------------------------------------------------------------------------------- /src/content/1.3/code/haskell/snippet02.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.3/code/haskell/snippet02.hs -------------------------------------------------------------------------------- /src/content/1.3/code/ocaml/snippet01.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.3/code/ocaml/snippet01.ml -------------------------------------------------------------------------------- /src/content/1.3/code/ocaml/snippet02.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.3/code/ocaml/snippet02.ml -------------------------------------------------------------------------------- /src/content/1.3/code/reason/snippet01.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.3/code/reason/snippet01.re -------------------------------------------------------------------------------- /src/content/1.3/code/reason/snippet02.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.3/code/reason/snippet02.re -------------------------------------------------------------------------------- /src/content/1.3/images/monoid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.3/images/monoid.jpg -------------------------------------------------------------------------------- /src/content/1.3/images/monoid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.3/images/monoid.png -------------------------------------------------------------------------------- /src/content/1.3/images/monoidhomset.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.3/images/monoidhomset.jpg -------------------------------------------------------------------------------- /src/content/1.4/code/haskell/snippet01.hs: -------------------------------------------------------------------------------- 1 | type Writer a = (a, String) -------------------------------------------------------------------------------- /src/content/1.4/code/haskell/snippet02.hs: -------------------------------------------------------------------------------- 1 | a -> Writer b -------------------------------------------------------------------------------- /src/content/1.4/code/haskell/snippet03.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.4/code/haskell/snippet03.hs -------------------------------------------------------------------------------- /src/content/1.4/code/haskell/snippet04.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.4/code/haskell/snippet04.hs -------------------------------------------------------------------------------- /src/content/1.4/code/haskell/snippet05.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.4/code/haskell/snippet05.hs -------------------------------------------------------------------------------- /src/content/1.4/code/haskell/snippet06.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.4/code/haskell/snippet06.hs -------------------------------------------------------------------------------- /src/content/1.4/code/haskell/snippet07.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.4/code/haskell/snippet07.hs -------------------------------------------------------------------------------- /src/content/1.4/code/ocaml/snippet01.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.4/code/ocaml/snippet01.ml -------------------------------------------------------------------------------- /src/content/1.4/code/ocaml/snippet02.ml: -------------------------------------------------------------------------------- 1 | 'a -> 'b writer 2 | -------------------------------------------------------------------------------- /src/content/1.4/code/ocaml/snippet03.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.4/code/ocaml/snippet03.ml -------------------------------------------------------------------------------- /src/content/1.4/code/ocaml/snippet04.ml: -------------------------------------------------------------------------------- 1 | let pure x = x, "" 2 | -------------------------------------------------------------------------------- /src/content/1.4/code/ocaml/snippet05.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.4/code/ocaml/snippet05.ml -------------------------------------------------------------------------------- /src/content/1.4/code/ocaml/snippet06.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.4/code/ocaml/snippet06.ml -------------------------------------------------------------------------------- /src/content/1.4/code/ocaml/snippet07.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.4/code/ocaml/snippet07.ml -------------------------------------------------------------------------------- /src/content/1.4/code/reason/snippet01.re: -------------------------------------------------------------------------------- 1 | type writer('a) = ('a, string); 2 | -------------------------------------------------------------------------------- /src/content/1.4/code/reason/snippet02.re: -------------------------------------------------------------------------------- 1 | 'a => writer('b) -------------------------------------------------------------------------------- /src/content/1.4/code/reason/snippet03.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.4/code/reason/snippet03.re -------------------------------------------------------------------------------- /src/content/1.4/code/reason/snippet04.re: -------------------------------------------------------------------------------- 1 | let pure = x => (x, ""); 2 | -------------------------------------------------------------------------------- /src/content/1.4/code/reason/snippet05.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.4/code/reason/snippet05.re -------------------------------------------------------------------------------- /src/content/1.4/code/reason/snippet06.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.4/code/reason/snippet06.re -------------------------------------------------------------------------------- /src/content/1.4/code/reason/snippet07.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.4/code/reason/snippet07.re -------------------------------------------------------------------------------- /src/content/1.4/code/scala/snippet01.scala: -------------------------------------------------------------------------------- 1 | type Writer[A] = (A, String) -------------------------------------------------------------------------------- /src/content/1.4/code/scala/snippet02.scala: -------------------------------------------------------------------------------- 1 | A => Writer[B] -------------------------------------------------------------------------------- /src/content/1.4/code/scala/snippet05.scala: -------------------------------------------------------------------------------- 1 | def pure[A](x: A): Writer[A] = (x, "") -------------------------------------------------------------------------------- /src/content/1.4/images/piggyback.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.4/images/piggyback.jpg -------------------------------------------------------------------------------- /src/content/1.4/kleisli-categories.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.4/kleisli-categories.tex -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet01.hs: -------------------------------------------------------------------------------- 1 | absurd :: Void -> a -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet02.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet02.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet03.hs: -------------------------------------------------------------------------------- 1 | yes :: a -> Bool 2 | yes _ = True -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet04.hs: -------------------------------------------------------------------------------- 1 | no :: a -> Bool 2 | no _ = False -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet05.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet05.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet06.hs: -------------------------------------------------------------------------------- 1 | fst :: (a, b) -> a 2 | fst (x, y) = x -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet07.hs: -------------------------------------------------------------------------------- 1 | snd :: (a, b) -> b 2 | snd (x, y) = y -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet08.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet08.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet09.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet09.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet10.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet10.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet11.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet11.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet12.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet12.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet13.hs: -------------------------------------------------------------------------------- 1 | m :: Int -> (Int, Bool) 2 | m x = (x, True) -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet14.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet14.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet15.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet15.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet16.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet16.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet17.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet17.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet18.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet18.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet19.hs: -------------------------------------------------------------------------------- 1 | m :: c -> (a, b) 2 | m x = (p x, q x) -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet20.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet20.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet21.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet21.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet22.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet22.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet23.hs: -------------------------------------------------------------------------------- 1 | data Contact = PhoneNum Int | EmailAddr String -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet24.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet24.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet25.hs: -------------------------------------------------------------------------------- 1 | data Either a b = Left a | Right b -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet26.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet26.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet27.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet27.hs -------------------------------------------------------------------------------- /src/content/1.5/code/haskell/snippet28.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/haskell/snippet28.hs -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet01.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet01.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet02.ml: -------------------------------------------------------------------------------- 1 | let unit x = () 2 | -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet03.ml: -------------------------------------------------------------------------------- 1 | let yes _ = true 2 | -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet04.ml: -------------------------------------------------------------------------------- 1 | let no _ = false 2 | -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet05.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet05.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet06.ml: -------------------------------------------------------------------------------- 1 | let fst (a, b) = a 2 | -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet07.ml: -------------------------------------------------------------------------------- 1 | let snd (a, b) = b 2 | -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet08.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet08.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet09.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet09.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet10.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet10.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet11.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet11.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet12.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet12.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet13.ml: -------------------------------------------------------------------------------- 1 | let m (x : int) = x, true 2 | -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet14.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet14.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet15.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet15.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet16.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet16.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet17.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet17.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet18.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet18.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet19.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet19.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet20.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet20.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet21.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet21.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet22.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet22.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet23.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet23.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet24.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet24.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet25.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet25.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet26.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet26.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet27.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet27.ml -------------------------------------------------------------------------------- /src/content/1.5/code/ocaml/snippet28.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/ocaml/snippet28.ml -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet01.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet01.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet02.re: -------------------------------------------------------------------------------- 1 | let unit = x => (); 2 | -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet03.re: -------------------------------------------------------------------------------- 1 | let yes = _ => true; 2 | -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet04.re: -------------------------------------------------------------------------------- 1 | let no = _ => false; 2 | -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet05.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet05.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet06.re: -------------------------------------------------------------------------------- 1 | let fst = ((a, b)) => a; 2 | -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet07.re: -------------------------------------------------------------------------------- 1 | let snd = ((a, b)) => b; 2 | -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet08.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet08.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet09.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet09.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet10.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet10.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet11.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet11.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet12.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet12.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet13.re: -------------------------------------------------------------------------------- 1 | let m = (x: int) => (x, true); 2 | -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet14.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet14.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet15.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet15.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet16.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet16.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet17.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet17.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet18.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet18.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet19.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet19.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet20.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet20.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet21.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet21.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet22.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet22.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet23.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet23.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet24.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet24.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet25.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet25.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet26.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet26.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet27.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet27.re -------------------------------------------------------------------------------- /src/content/1.5/code/reason/snippet28.re: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/code/reason/snippet28.re -------------------------------------------------------------------------------- /src/content/1.5/code/scala/snippet01.scala: -------------------------------------------------------------------------------- 1 | def absurd[A]: Nothing => A -------------------------------------------------------------------------------- /src/content/1.5/images/final.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/images/final.jpg -------------------------------------------------------------------------------- /src/content/1.5/images/initial.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/images/initial.jpg -------------------------------------------------------------------------------- /src/content/1.5/images/not-a-product.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/images/not-a-product.jpg -------------------------------------------------------------------------------- /src/content/1.5/images/productpattern.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/images/productpattern.jpg -------------------------------------------------------------------------------- /src/content/1.5/images/productranking.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/images/productranking.jpg -------------------------------------------------------------------------------- /src/content/1.5/images/uniqueness.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.5/images/uniqueness.jpg -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet01.hs: -------------------------------------------------------------------------------- 1 | swap :: (a, b) -> (b, a) 2 | swap (x, y) = (y, x) -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet02.hs: -------------------------------------------------------------------------------- 1 | ((a, b), c) -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet03.hs: -------------------------------------------------------------------------------- 1 | (a, (b, c)) -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet04.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet04.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet05.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet05.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet06.hs: -------------------------------------------------------------------------------- 1 | (a, ()) -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet07.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet07.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet08.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet08.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet09.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet09.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet10.hs: -------------------------------------------------------------------------------- 1 | stmt :: Pair String Bool 2 | stmt = P "This statement is" False -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet11.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet11.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet12.hs: -------------------------------------------------------------------------------- 1 | stmt = (,) "This statement is" False -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet13.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet13.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet14.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet14.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet15.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet15.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet16.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet16.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet17.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet17.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet18.hs: -------------------------------------------------------------------------------- 1 | atomicNumber :: Element -> Int -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet19.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet19.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet20.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet20.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet21.hs: -------------------------------------------------------------------------------- 1 | data Either a b = Left a | Right b -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet22.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet22.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet23.hs: -------------------------------------------------------------------------------- 1 | Either a Void -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet24.hs: -------------------------------------------------------------------------------- 1 | data Color = Red | Green | Blue -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet25.hs: -------------------------------------------------------------------------------- 1 | data Bool = True | False -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet26.hs: -------------------------------------------------------------------------------- 1 | data Maybe a = Nothing | Just a -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet27.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet27.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet28.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet28.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet29.hs: -------------------------------------------------------------------------------- 1 | type Maybe a = Either () a 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet30.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet30.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet31.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet31.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet32.hs: -------------------------------------------------------------------------------- 1 | (a, Either b c) -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet33.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet33.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet34.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet34.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet35.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet35.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet36.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet36.hs -------------------------------------------------------------------------------- /src/content/1.6/code/haskell/snippet37.hs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/haskell/snippet37.hs -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet01.ml: -------------------------------------------------------------------------------- 1 | let swap (a, b) = b, a 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet02.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet02.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet03.ml: -------------------------------------------------------------------------------- 1 | ('a * ('b * 'c)) 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet04.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet04.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet05.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet05.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet06.ml: -------------------------------------------------------------------------------- 1 | 'a * unit 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet07.ml: -------------------------------------------------------------------------------- 1 | let rho (a, ()) = a 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet08.ml: -------------------------------------------------------------------------------- 1 | let rho_inv a = a, () 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet09.ml: -------------------------------------------------------------------------------- 1 | type ('a, 'b) pair = P of 'a * 'b 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet10.ml: -------------------------------------------------------------------------------- 1 | let stmt = P ("This statement is", false) 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet11.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet11.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet12.ml: -------------------------------------------------------------------------------- 1 | let stmt = "This statement is", false 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet13.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet13.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet14.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet14.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet15.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet15.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet16.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet16.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet17.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet17.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet18.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet18.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet19.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet19.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet20.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet20.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet21.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet21.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet22.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet22.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet23.ml: -------------------------------------------------------------------------------- 1 | 'a void either 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet24.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet24.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet25.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet25.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet26.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet26.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet27.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/code/ocaml/snippet27.ml -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet29.ml: -------------------------------------------------------------------------------- 1 | type 'a maybe = (unit, 'a) either 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet32.ml: -------------------------------------------------------------------------------- 1 | 'a * ('b, 'c) either 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/ocaml/snippet36.ml: -------------------------------------------------------------------------------- 1 | let prod1 = 2, Left "Hi!" 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/reason/snippet01.re: -------------------------------------------------------------------------------- 1 | let swap = ((a, b)) => (b, a); 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/reason/snippet02.re: -------------------------------------------------------------------------------- 1 | (('a, 'b), 'c) -------------------------------------------------------------------------------- /src/content/1.6/code/reason/snippet03.re: -------------------------------------------------------------------------------- 1 | ('a, ('b, 'c)) -------------------------------------------------------------------------------- /src/content/1.6/code/reason/snippet06.re: -------------------------------------------------------------------------------- 1 | ('a, unit) -------------------------------------------------------------------------------- /src/content/1.6/code/reason/snippet07.re: -------------------------------------------------------------------------------- 1 | let rho = ((a, ())) => a; 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/reason/snippet08.re: -------------------------------------------------------------------------------- 1 | let rho_inv = a => (a, ()); 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/reason/snippet10.re: -------------------------------------------------------------------------------- 1 | let stmt = P("This statement is", false); 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/reason/snippet12.re: -------------------------------------------------------------------------------- 1 | let stmt = ("This statement is", false); 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/reason/snippet13.re: -------------------------------------------------------------------------------- 1 | type stmt = 2 | | Stmt(string, int); 3 | -------------------------------------------------------------------------------- /src/content/1.6/code/reason/snippet23.re: -------------------------------------------------------------------------------- 1 | either('a, void) -------------------------------------------------------------------------------- /src/content/1.6/code/reason/snippet29.re: -------------------------------------------------------------------------------- 1 | type maybe('a) = either(unit, 'a); 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/reason/snippet32.re: -------------------------------------------------------------------------------- 1 | ('a, either('b, 'c)) -------------------------------------------------------------------------------- /src/content/1.6/code/reason/snippet33.re: -------------------------------------------------------------------------------- 1 | either(('a, 'b), ('c, 'd)) -------------------------------------------------------------------------------- /src/content/1.6/code/reason/snippet36.re: -------------------------------------------------------------------------------- 1 | let prod1 = (2, Left("Hi!")); 2 | -------------------------------------------------------------------------------- /src/content/1.6/code/scala/snippet02.scala: -------------------------------------------------------------------------------- 1 | ((A, B), C) -------------------------------------------------------------------------------- /src/content/1.6/code/scala/snippet03.scala: -------------------------------------------------------------------------------- 1 | (A, (B, C)) -------------------------------------------------------------------------------- /src/content/1.6/code/scala/snippet06.scala: -------------------------------------------------------------------------------- 1 | (A, Unit) -------------------------------------------------------------------------------- /src/content/1.6/code/scala/snippet10.scala: -------------------------------------------------------------------------------- 1 | val stmt: Pair[String, Boolean] = 2 | P("This statement is", false) -------------------------------------------------------------------------------- /src/content/1.6/code/scala/snippet11.scala: -------------------------------------------------------------------------------- 1 | case class Pair[A, B](a: A, b: B) -------------------------------------------------------------------------------- /src/content/1.6/code/scala/snippet12.scala: -------------------------------------------------------------------------------- 1 | val stmt = ("This statement is", false) -------------------------------------------------------------------------------- /src/content/1.6/code/scala/snippet13.scala: -------------------------------------------------------------------------------- 1 | case class Stmt(s: String, b: Boolean) -------------------------------------------------------------------------------- /src/content/1.6/code/scala/snippet18.scala: -------------------------------------------------------------------------------- 1 | val atomicNumber: Element => Int -------------------------------------------------------------------------------- /src/content/1.6/code/scala/snippet23.scala: -------------------------------------------------------------------------------- 1 | Either[A, Nothing] -------------------------------------------------------------------------------- /src/content/1.6/code/scala/snippet27.scala: -------------------------------------------------------------------------------- 1 | case object NoneType -------------------------------------------------------------------------------- /src/content/1.6/code/scala/snippet28.scala: -------------------------------------------------------------------------------- 1 | case class SomeType[A](a: A) -------------------------------------------------------------------------------- /src/content/1.6/code/scala/snippet29.scala: -------------------------------------------------------------------------------- 1 | type Option[A] = Either[Unit, A] -------------------------------------------------------------------------------- /src/content/1.6/code/scala/snippet32.scala: -------------------------------------------------------------------------------- 1 | (A, Either[B, C]) -------------------------------------------------------------------------------- /src/content/1.6/code/scala/snippet36.scala: -------------------------------------------------------------------------------- 1 | val prod1: (Int, Either[String, Float]) = 2 | (2, Left("Hi!")) -------------------------------------------------------------------------------- /src/content/1.6/images/pair.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.6/images/pair.jpg -------------------------------------------------------------------------------- /src/content/1.7/code/haskell/snippet01.hs: -------------------------------------------------------------------------------- 1 | data Maybe a = Nothing | Just a -------------------------------------------------------------------------------- /src/content/1.7/code/haskell/snippet02.hs: -------------------------------------------------------------------------------- 1 | f :: a -> b -------------------------------------------------------------------------------- /src/content/1.7/code/haskell/snippet07.hs: -------------------------------------------------------------------------------- 1 | id x = x -------------------------------------------------------------------------------- /src/content/1.7/code/haskell/snippet08.hs: -------------------------------------------------------------------------------- 1 | fmap id = id -------------------------------------------------------------------------------- /src/content/1.7/code/haskell/snippet19.hs: -------------------------------------------------------------------------------- 1 | (->) a b -------------------------------------------------------------------------------- /src/content/1.7/code/haskell/snippet20.hs: -------------------------------------------------------------------------------- 1 | (->) a -------------------------------------------------------------------------------- /src/content/1.7/code/haskell/snippet24.hs: -------------------------------------------------------------------------------- 1 | fmap = (.) -------------------------------------------------------------------------------- /src/content/1.7/code/haskell/snippet25.hs: -------------------------------------------------------------------------------- 1 | nats :: [Integer] 2 | nats = [1..] -------------------------------------------------------------------------------- /src/content/1.7/code/ocaml/snippet07.ml: -------------------------------------------------------------------------------- 1 | let id x = x 2 | -------------------------------------------------------------------------------- /src/content/1.7/code/ocaml/snippet19.ml: -------------------------------------------------------------------------------- 1 | type ('a, 'b) t = 'a -> 'b 2 | -------------------------------------------------------------------------------- /src/content/1.7/code/ocaml/snippet25.ml: -------------------------------------------------------------------------------- 1 | let nats = Caml.Stream.from (fun i -> Some (i + 1)) 2 | -------------------------------------------------------------------------------- /src/content/1.7/code/reason/snippet01.re: -------------------------------------------------------------------------------- 1 | let compose = (f, g, x) => f(g(x)); 2 | -------------------------------------------------------------------------------- /src/content/1.7/code/reason/snippet08.re: -------------------------------------------------------------------------------- 1 | let id = x => x; 2 | -------------------------------------------------------------------------------- /src/content/1.7/code/reason/snippet20.re: -------------------------------------------------------------------------------- 1 | type t('a, 'b) = 'a => 'b; 2 | -------------------------------------------------------------------------------- /src/content/1.7/code/reason/snippet25.re: -------------------------------------------------------------------------------- 1 | let nats = Caml.Stream.from(i => Some(i + 1)); 2 | -------------------------------------------------------------------------------- /src/content/1.7/code/scala/snippet02.scala: -------------------------------------------------------------------------------- 1 | val f: A => B -------------------------------------------------------------------------------- /src/content/1.7/code/scala/snippet07.scala: -------------------------------------------------------------------------------- 1 | def identity[A](x: A) = x -------------------------------------------------------------------------------- /src/content/1.7/code/scala/snippet10.scala: -------------------------------------------------------------------------------- 1 | trait Eq[A]{ 2 | def ===(x: A, y: A): Boolean 3 | } -------------------------------------------------------------------------------- /src/content/1.7/code/scala/snippet19.scala: -------------------------------------------------------------------------------- 1 | Function1[A, B] 2 | // or 3 | A => B -------------------------------------------------------------------------------- /src/content/1.7/code/scala/snippet20.scala: -------------------------------------------------------------------------------- 1 | // with the Kind Projector plugin 2 | Function1[A, ?] or A => ? -------------------------------------------------------------------------------- /src/content/1.7/code/scala/snippet26.scala: -------------------------------------------------------------------------------- 1 | case class Const[C, A](v: C) -------------------------------------------------------------------------------- /src/content/1.7/functors-zh-cn.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.7/functors-zh-cn.tex -------------------------------------------------------------------------------- /src/content/1.7/functors.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.7/functors.tex -------------------------------------------------------------------------------- /src/content/1.7/images/functor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.7/images/functor.jpg -------------------------------------------------------------------------------- /src/content/1.7/images/functorid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.7/images/functorid.jpg -------------------------------------------------------------------------------- /src/content/1.8/code/haskell/snippet07.hs: -------------------------------------------------------------------------------- 1 | data Maybe a = Nothing | Just a -------------------------------------------------------------------------------- /src/content/1.8/code/haskell/snippet08.hs: -------------------------------------------------------------------------------- 1 | type Maybe a = Either (Const () a) (Identity a) -------------------------------------------------------------------------------- /src/content/1.8/code/haskell/snippet11.hs: -------------------------------------------------------------------------------- 1 | bf (fu a) (gu b) -------------------------------------------------------------------------------- /src/content/1.8/code/haskell/snippet16.hs: -------------------------------------------------------------------------------- 1 | type Writer a = (a, String) -------------------------------------------------------------------------------- /src/content/1.8/code/haskell/snippet19.hs: -------------------------------------------------------------------------------- 1 | fmap f = id >=> (\x -> return (f x)) -------------------------------------------------------------------------------- /src/content/1.8/code/haskell/snippet20.hs: -------------------------------------------------------------------------------- 1 | (->) r -------------------------------------------------------------------------------- /src/content/1.8/code/haskell/snippet21.hs: -------------------------------------------------------------------------------- 1 | type Reader r a = r -> a -------------------------------------------------------------------------------- /src/content/1.8/code/haskell/snippet23.hs: -------------------------------------------------------------------------------- 1 | type Op r a = a -> r -------------------------------------------------------------------------------- /src/content/1.8/code/haskell/snippet28.hs: -------------------------------------------------------------------------------- 1 | contramap = flip (.) -------------------------------------------------------------------------------- /src/content/1.8/code/ocaml/snippet05.ml: -------------------------------------------------------------------------------- 1 | type 'a id = Id of 'a 2 | -------------------------------------------------------------------------------- /src/content/1.8/code/ocaml/snippet11.ml: -------------------------------------------------------------------------------- 1 | type ('a FU.t, 'b GU.t) BF.t 2 | -------------------------------------------------------------------------------- /src/content/1.8/code/ocaml/snippet21.ml: -------------------------------------------------------------------------------- 1 | type ('r, 'a) reader = 'r -> 'a 2 | -------------------------------------------------------------------------------- /src/content/1.8/code/ocaml/snippet23.ml: -------------------------------------------------------------------------------- 1 | type ('r, 'a) op = 'a -> 'r 2 | -------------------------------------------------------------------------------- /src/content/1.8/code/ocaml/snippet27.ml: -------------------------------------------------------------------------------- 1 | let flip f b a = f a b 2 | -------------------------------------------------------------------------------- /src/content/1.8/code/reason/snippet16.re: -------------------------------------------------------------------------------- 1 | type writer('a) = ('a, string); 2 | -------------------------------------------------------------------------------- /src/content/1.8/code/reason/snippet21.re: -------------------------------------------------------------------------------- 1 | type reader('r, 'a) = 'r => 'a; 2 | -------------------------------------------------------------------------------- /src/content/1.8/code/reason/snippet23.re: -------------------------------------------------------------------------------- 1 | type op('r, 'a) = 'a => 'r; 2 | -------------------------------------------------------------------------------- /src/content/1.8/code/reason/snippet27.re: -------------------------------------------------------------------------------- 1 | let flip = (f, b, a) => f(a, b); 2 | -------------------------------------------------------------------------------- /src/content/1.8/code/scala/snippet05.scala: -------------------------------------------------------------------------------- 1 | type Id[A] = A -------------------------------------------------------------------------------- /src/content/1.8/code/scala/snippet08.scala: -------------------------------------------------------------------------------- 1 | type Option[A] = Either[Const[Unit, A], Id[A]] -------------------------------------------------------------------------------- /src/content/1.8/code/scala/snippet11.scala: -------------------------------------------------------------------------------- 1 | BF[FU[A], GU[B]] -------------------------------------------------------------------------------- /src/content/1.8/code/scala/snippet16.scala: -------------------------------------------------------------------------------- 1 | type Writer[A] = (A, String) -------------------------------------------------------------------------------- /src/content/1.8/code/scala/snippet18.scala: -------------------------------------------------------------------------------- 1 | // return is a keyword in Scala 2 | def pure[A](x: A): Writer[A] = (x, "") -------------------------------------------------------------------------------- /src/content/1.8/code/scala/snippet20.scala: -------------------------------------------------------------------------------- 1 | // with Kind Projector plugin 2 | Function1[R, ?] or R => ? -------------------------------------------------------------------------------- /src/content/1.8/code/scala/snippet21.scala: -------------------------------------------------------------------------------- 1 | type Reader[R, A] = R => A -------------------------------------------------------------------------------- /src/content/1.8/code/scala/snippet23.scala: -------------------------------------------------------------------------------- 1 | type Op[R, A] = A => R -------------------------------------------------------------------------------- /src/content/1.8/functoriality.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.8/functoriality.tex -------------------------------------------------------------------------------- /src/content/1.8/images/bifunctor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.8/images/bifunctor.jpg -------------------------------------------------------------------------------- /src/content/1.8/images/bimap.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.8/images/bimap.jpg -------------------------------------------------------------------------------- /src/content/1.8/images/dimap.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.8/images/dimap.jpg -------------------------------------------------------------------------------- /src/content/1.8/images/first.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.8/images/first.jpg -------------------------------------------------------------------------------- /src/content/1.8/images/second.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.8/images/second.jpg -------------------------------------------------------------------------------- /src/content/1.9/code/haskell/snippet04.hs: -------------------------------------------------------------------------------- 1 | catstr' s = \s' -> s ++ s' -------------------------------------------------------------------------------- /src/content/1.9/code/haskell/snippet06.hs: -------------------------------------------------------------------------------- 1 | (a, b) -> c -------------------------------------------------------------------------------- /src/content/1.9/code/haskell/snippet10.hs: -------------------------------------------------------------------------------- 1 | f :: Either Int Double -> String -------------------------------------------------------------------------------- /src/content/1.9/code/haskell/snippet14.hs: -------------------------------------------------------------------------------- 1 | Either a b -> a -------------------------------------------------------------------------------- /src/content/1.9/code/haskell/snippet15.hs: -------------------------------------------------------------------------------- 1 | absurd :: Void -> a -------------------------------------------------------------------------------- /src/content/1.9/code/ocaml/snippet05.ml: -------------------------------------------------------------------------------- 1 | let greet = catstr "Hello" 2 | -------------------------------------------------------------------------------- /src/content/1.9/code/ocaml/snippet06.ml: -------------------------------------------------------------------------------- 1 | 'a * 'b -> 'a 2 | -------------------------------------------------------------------------------- /src/content/1.9/code/ocaml/snippet07.ml: -------------------------------------------------------------------------------- 1 | let curry f a b = f (a, b) 2 | -------------------------------------------------------------------------------- /src/content/1.9/code/ocaml/snippet09.ml: -------------------------------------------------------------------------------- 1 | let factorizer g a b = g (a, b) 2 | -------------------------------------------------------------------------------- /src/content/1.9/code/ocaml/snippet13.ml: -------------------------------------------------------------------------------- 1 | let eval (f, a) = f a 2 | -------------------------------------------------------------------------------- /src/content/1.9/code/ocaml/snippet14.ml: -------------------------------------------------------------------------------- 1 | ('a, 'b) either -> 'a 2 | -------------------------------------------------------------------------------- /src/content/1.9/code/ocaml/snippet15.ml: -------------------------------------------------------------------------------- 1 | val absurd : void -> 'a 2 | -------------------------------------------------------------------------------- /src/content/1.9/code/reason/snippet05.re: -------------------------------------------------------------------------------- 1 | let greet = catstr("Hello"); 2 | -------------------------------------------------------------------------------- /src/content/1.9/code/reason/snippet06.re: -------------------------------------------------------------------------------- 1 | ('a, 'b) => 'a -------------------------------------------------------------------------------- /src/content/1.9/code/reason/snippet08.re: -------------------------------------------------------------------------------- 1 | let uncurry = (f, p) => f(fst(p), snd(p)); 2 | -------------------------------------------------------------------------------- /src/content/1.9/code/reason/snippet10.re: -------------------------------------------------------------------------------- 1 | module type Exponential_Of_Sums_Example = { 2 | let f: either(int, float) => string; 3 | }; 4 | -------------------------------------------------------------------------------- /src/content/1.9/code/reason/snippet13.re: -------------------------------------------------------------------------------- 1 | let eval = ((f, a)) => f(a); 2 | -------------------------------------------------------------------------------- /src/content/1.9/code/reason/snippet14.re: -------------------------------------------------------------------------------- 1 | either('a, 'b) => 'a -------------------------------------------------------------------------------- /src/content/1.9/code/reason/snippet15.re: -------------------------------------------------------------------------------- 1 | let absurd: void => 'a -------------------------------------------------------------------------------- /src/content/1.9/code/scala/snippet06.scala: -------------------------------------------------------------------------------- 1 | (A, B) => C -------------------------------------------------------------------------------- /src/content/1.9/code/scala/snippet10.scala: -------------------------------------------------------------------------------- 1 | val f: Either[Int, Double] => String -------------------------------------------------------------------------------- /src/content/1.9/code/scala/snippet14.scala: -------------------------------------------------------------------------------- 1 | Either[A, B] => A -------------------------------------------------------------------------------- /src/content/1.9/code/scala/snippet15.scala: -------------------------------------------------------------------------------- 1 | def absurd[A]: Nothing => A -------------------------------------------------------------------------------- /src/content/1.9/function-types.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.9/function-types.tex -------------------------------------------------------------------------------- /src/content/1.9/images/functionset.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.9/images/functionset.jpg -------------------------------------------------------------------------------- /src/content/1.9/images/hom-set.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.9/images/hom-set.jpg -------------------------------------------------------------------------------- /src/content/1.9/images/set-hom-set.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/1.9/images/set-hom-set.jpg -------------------------------------------------------------------------------- /src/content/2.1/code/haskell/snippet01.hs: -------------------------------------------------------------------------------- 1 | h = g . f -------------------------------------------------------------------------------- /src/content/2.1/code/ocaml/snippet01.ml: -------------------------------------------------------------------------------- 1 | (* Assume g and f are already defined *) 2 | let h = compose g f 3 | -------------------------------------------------------------------------------- /src/content/2.1/code/reason/snippet01.re: -------------------------------------------------------------------------------- 1 | /* Assume g and f are already defined */ 2 | let h = compose(g, f); 3 | -------------------------------------------------------------------------------- /src/content/2.1/code/scala/snippet01.scala: -------------------------------------------------------------------------------- 1 | val h = g compose f -------------------------------------------------------------------------------- /src/content/2.1/images/asteroids.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.1/images/asteroids.png -------------------------------------------------------------------------------- /src/content/2.1/images/feynman.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.1/images/feynman.jpg -------------------------------------------------------------------------------- /src/content/2.1/images/mortar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.1/images/mortar.jpg -------------------------------------------------------------------------------- /src/content/2.1/images/snell.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.1/images/snell.jpg -------------------------------------------------------------------------------- /src/content/2.2/code/haskell/snippet08.hs: -------------------------------------------------------------------------------- 1 | p t = (t, (-2) * t) -------------------------------------------------------------------------------- /src/content/2.2/code/haskell/snippet10.hs: -------------------------------------------------------------------------------- 1 | p'() = (0, 0) -------------------------------------------------------------------------------- /src/content/2.2/code/haskell/snippet11.hs: -------------------------------------------------------------------------------- 1 | p' = p . h -------------------------------------------------------------------------------- /src/content/2.2/code/haskell/snippet12.hs: -------------------------------------------------------------------------------- 1 | h () = 0 -------------------------------------------------------------------------------- /src/content/2.2/code/haskell/snippet15.hs: -------------------------------------------------------------------------------- 1 | g . q = f . p -------------------------------------------------------------------------------- /src/content/2.2/code/haskell/snippet16.hs: -------------------------------------------------------------------------------- 1 | f x = 1.23 -------------------------------------------------------------------------------- /src/content/2.2/code/ocaml/snippet08.ml: -------------------------------------------------------------------------------- 1 | let p t = t, -2 * t 2 | -------------------------------------------------------------------------------- /src/content/2.2/code/ocaml/snippet10.ml: -------------------------------------------------------------------------------- 1 | let p' () = 0, 0 2 | -------------------------------------------------------------------------------- /src/content/2.2/code/ocaml/snippet11.ml: -------------------------------------------------------------------------------- 1 | let p' = compose p h 2 | -------------------------------------------------------------------------------- /src/content/2.2/code/ocaml/snippet12.ml: -------------------------------------------------------------------------------- 1 | let h () = 0 2 | -------------------------------------------------------------------------------- /src/content/2.2/code/ocaml/snippet16.ml: -------------------------------------------------------------------------------- 1 | let f x = 1.23 2 | -------------------------------------------------------------------------------- /src/content/2.2/code/reason/snippet08.re: -------------------------------------------------------------------------------- 1 | let p = t => (t, (-2) * t); 2 | -------------------------------------------------------------------------------- /src/content/2.2/code/reason/snippet10.re: -------------------------------------------------------------------------------- 1 | let p' = () => (0, 0); 2 | -------------------------------------------------------------------------------- /src/content/2.2/code/reason/snippet11.re: -------------------------------------------------------------------------------- 1 | let p' = compose(p, h); 2 | -------------------------------------------------------------------------------- /src/content/2.2/code/reason/snippet12.re: -------------------------------------------------------------------------------- 1 | let h = () => 0; 2 | -------------------------------------------------------------------------------- /src/content/2.2/code/reason/snippet16.re: -------------------------------------------------------------------------------- 1 | let f = x => 1.23; 2 | -------------------------------------------------------------------------------- /src/content/2.2/code/scala/snippet08.scala: -------------------------------------------------------------------------------- 1 | def p(t) = (t, (-2) * t) -------------------------------------------------------------------------------- /src/content/2.2/code/scala/snippet11.scala: -------------------------------------------------------------------------------- 1 | val p1 = p compose h -------------------------------------------------------------------------------- /src/content/2.2/code/scala/snippet12.scala: -------------------------------------------------------------------------------- 1 | def h(_,_) = 0 -------------------------------------------------------------------------------- /src/content/2.2/code/scala/snippet16.scala: -------------------------------------------------------------------------------- 1 | f(x) == 1.23 -------------------------------------------------------------------------------- /src/content/2.2/images/classes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.2/images/classes.jpg -------------------------------------------------------------------------------- /src/content/2.2/images/colimit.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.2/images/colimit.jpg -------------------------------------------------------------------------------- /src/content/2.2/images/cone.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.2/images/cone.jpg -------------------------------------------------------------------------------- /src/content/2.2/images/continuity.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.2/images/continuity.jpg -------------------------------------------------------------------------------- /src/content/2.2/images/natmapping.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.2/images/natmapping.jpg -------------------------------------------------------------------------------- /src/content/2.2/images/productcone.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.2/images/productcone.jpg -------------------------------------------------------------------------------- /src/content/2.2/images/two.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.2/images/two.jpg -------------------------------------------------------------------------------- /src/content/2.2/images/twodelta.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.2/images/twodelta.jpg -------------------------------------------------------------------------------- /src/content/2.3/code/haskell/snippet05.hs: -------------------------------------------------------------------------------- 1 | [2] ++ [3] = [2, 3] -------------------------------------------------------------------------------- /src/content/2.3/code/haskell/snippet06.hs: -------------------------------------------------------------------------------- 1 | 2 * 3 = 6 -------------------------------------------------------------------------------- /src/content/2.3/code/haskell/snippet07.hs: -------------------------------------------------------------------------------- 1 | p :: x -> U m -------------------------------------------------------------------------------- /src/content/2.3/code/haskell/snippet08.hs: -------------------------------------------------------------------------------- 1 | q :: x -> U n -------------------------------------------------------------------------------- /src/content/2.3/code/haskell/snippet09.hs: -------------------------------------------------------------------------------- 1 | h :: m -> n -------------------------------------------------------------------------------- /src/content/2.3/code/haskell/snippet10.hs: -------------------------------------------------------------------------------- 1 | q = U h . p -------------------------------------------------------------------------------- /src/content/2.3/code/ocaml/snippet03.ml: -------------------------------------------------------------------------------- 1 | 2 * 3 = 6 2 | List.append [2] [3] = [2; 3] 3 | -------------------------------------------------------------------------------- /src/content/2.3/code/ocaml/snippet05.ml: -------------------------------------------------------------------------------- 1 | List.append [2] [3] = [2; 3] 2 | -------------------------------------------------------------------------------- /src/content/2.3/code/ocaml/snippet06.ml: -------------------------------------------------------------------------------- 1 | 2 * 3 = 6 2 | -------------------------------------------------------------------------------- /src/content/2.3/code/ocaml/snippet09.ml: -------------------------------------------------------------------------------- 1 | val h : m -> n 2 | -------------------------------------------------------------------------------- /src/content/2.3/code/ocaml/snippet10.ml: -------------------------------------------------------------------------------- 1 | val q = compose uh p 2 | -------------------------------------------------------------------------------- /src/content/2.3/code/reason/snippet03.re: -------------------------------------------------------------------------------- 1 | 2 * 3 == 6 2 | List.append([2], [3]) == [2, 3]; 3 | -------------------------------------------------------------------------------- /src/content/2.3/code/reason/snippet05.re: -------------------------------------------------------------------------------- 1 | List.append([2], [3]) == [2, 3]; 2 | -------------------------------------------------------------------------------- /src/content/2.3/code/reason/snippet06.re: -------------------------------------------------------------------------------- 1 | 2 * 3 == 6; 2 | -------------------------------------------------------------------------------- /src/content/2.3/code/reason/snippet09.re: -------------------------------------------------------------------------------- 1 | let h: m => n 2 | -------------------------------------------------------------------------------- /src/content/2.3/code/reason/snippet10.re: -------------------------------------------------------------------------------- 1 | let q: compose(uh p) 2 | -------------------------------------------------------------------------------- /src/content/2.3/code/scala/snippet04.scala: -------------------------------------------------------------------------------- 1 | h(a * b) == h(a) * h(b) -------------------------------------------------------------------------------- /src/content/2.3/code/scala/snippet06.scala: -------------------------------------------------------------------------------- 1 | 2 * 3 == 6 -------------------------------------------------------------------------------- /src/content/2.3/code/scala/snippet07.scala: -------------------------------------------------------------------------------- 1 | val p: X => U[M] -------------------------------------------------------------------------------- /src/content/2.3/code/scala/snippet08.scala: -------------------------------------------------------------------------------- 1 | val q: X => U[N] -------------------------------------------------------------------------------- /src/content/2.3/code/scala/snippet09.scala: -------------------------------------------------------------------------------- 1 | val h: M => N -------------------------------------------------------------------------------- /src/content/2.3/code/scala/snippet10.scala: -------------------------------------------------------------------------------- 1 | val q = uh compose p -------------------------------------------------------------------------------- /src/content/2.3/free-monoids.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.3/free-monoids.tex -------------------------------------------------------------------------------- /src/content/2.3/images/bunnies.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.3/images/bunnies.jpg -------------------------------------------------------------------------------- /src/content/2.4/code/haskell/snippet01.hs: -------------------------------------------------------------------------------- 1 | type Reader a x = a -> x -------------------------------------------------------------------------------- /src/content/2.4/code/haskell/snippet03.hs: -------------------------------------------------------------------------------- 1 | type Op a x = x -> a -------------------------------------------------------------------------------- /src/content/2.4/code/ocaml/snippet01.ml: -------------------------------------------------------------------------------- 1 | type ('a, 'x) reader = 'a -> 'x 2 | -------------------------------------------------------------------------------- /src/content/2.4/code/ocaml/snippet03.ml: -------------------------------------------------------------------------------- 1 | type ('a, 'x) op = 'x -> 'a 2 | -------------------------------------------------------------------------------- /src/content/2.4/code/reason/snippet01.re: -------------------------------------------------------------------------------- 1 | type reader('a, 'x) = 'a => 'x; 2 | -------------------------------------------------------------------------------- /src/content/2.4/code/reason/snippet03.re: -------------------------------------------------------------------------------- 1 | type op('a, 'x) = 'x => 'a; 2 | -------------------------------------------------------------------------------- /src/content/2.4/code/scala/snippet01.scala: -------------------------------------------------------------------------------- 1 | type Reader[A, X] = A => X -------------------------------------------------------------------------------- /src/content/2.4/code/scala/snippet03.scala: -------------------------------------------------------------------------------- 1 | type Op[A, X] = X => A -------------------------------------------------------------------------------- /src/content/2.4/code/scala/snippet09.scala: -------------------------------------------------------------------------------- 1 | def beta[A]: F ~> (A => ?) -------------------------------------------------------------------------------- /src/content/2.4/code/scala/snippet12.scala: -------------------------------------------------------------------------------- 1 | def beta: List ~> (Int => ?) -------------------------------------------------------------------------------- /src/content/2.4/images/hom-functor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.4/images/hom-functor.jpg -------------------------------------------------------------------------------- /src/content/2.4/images/hom-set.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.4/images/hom-set.jpg -------------------------------------------------------------------------------- /src/content/2.5/code/haskell/snippet01.hs: -------------------------------------------------------------------------------- 1 | type Reader a x = a -> x -------------------------------------------------------------------------------- /src/content/2.5/code/haskell/snippet05.hs: -------------------------------------------------------------------------------- 1 | alpha id :: F a -------------------------------------------------------------------------------- /src/content/2.5/code/haskell/snippet06.hs: -------------------------------------------------------------------------------- 1 | fa :: F a -------------------------------------------------------------------------------- /src/content/2.5/code/haskell/snippet07.hs: -------------------------------------------------------------------------------- 1 | alpha h = fmap h fa -------------------------------------------------------------------------------- /src/content/2.5/code/ocaml/snippet01.ml: -------------------------------------------------------------------------------- 1 | type ('a, 'x) reader = 'a -> 'x 2 | -------------------------------------------------------------------------------- /src/content/2.5/code/ocaml/snippet05.ml: -------------------------------------------------------------------------------- 1 | alpha id : 'a f 2 | -------------------------------------------------------------------------------- /src/content/2.5/code/ocaml/snippet06.ml: -------------------------------------------------------------------------------- 1 | val fa : 'a f 2 | -------------------------------------------------------------------------------- /src/content/2.5/code/ocaml/snippet07.ml: -------------------------------------------------------------------------------- 1 | alpha h = F.fmap h fa 2 | -------------------------------------------------------------------------------- /src/content/2.5/code/reason/snippet01.re: -------------------------------------------------------------------------------- 1 | type reader('a, 'x) = 'a => 'x; 2 | -------------------------------------------------------------------------------- /src/content/2.5/code/reason/snippet05.re: -------------------------------------------------------------------------------- 1 | alpha(id) : f('a) -------------------------------------------------------------------------------- /src/content/2.5/code/reason/snippet06.re: -------------------------------------------------------------------------------- 1 | let fa: f('a) 2 | -------------------------------------------------------------------------------- /src/content/2.5/code/reason/snippet07.re: -------------------------------------------------------------------------------- 1 | alpha(h) == F.fmap(h, fa); 2 | -------------------------------------------------------------------------------- /src/content/2.5/code/scala/snippet01.scala: -------------------------------------------------------------------------------- 1 | type Reader[A, X] = A => X -------------------------------------------------------------------------------- /src/content/2.5/code/scala/snippet04.scala: -------------------------------------------------------------------------------- 1 | def alpha[A]: (A => ?) ~> F -------------------------------------------------------------------------------- /src/content/2.5/code/scala/snippet05.scala: -------------------------------------------------------------------------------- 1 | alpha(identity): F[A] -------------------------------------------------------------------------------- /src/content/2.5/code/scala/snippet06.scala: -------------------------------------------------------------------------------- 1 | def fa[A]: F[A] -------------------------------------------------------------------------------- /src/content/2.5/code/scala/snippet07.scala: -------------------------------------------------------------------------------- 1 | alpha(h) == fmap(h)(fa) -------------------------------------------------------------------------------- /src/content/2.5/images/yoneda1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.5/images/yoneda1.png -------------------------------------------------------------------------------- /src/content/2.5/images/yoneda2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.5/images/yoneda2.png -------------------------------------------------------------------------------- /src/content/2.5/images/yoneda3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.5/images/yoneda3.png -------------------------------------------------------------------------------- /src/content/2.5/images/yoneda4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.5/images/yoneda4.png -------------------------------------------------------------------------------- /src/content/2.5/images/yoneda5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.5/images/yoneda5.png -------------------------------------------------------------------------------- /src/content/2.5/the-yoneda-lemma.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.5/the-yoneda-lemma.tex -------------------------------------------------------------------------------- /src/content/2.6/code/haskell/snippet02.hs: -------------------------------------------------------------------------------- 1 | fromY id :: b -> a -------------------------------------------------------------------------------- /src/content/2.6/code/scala/snippet02.scala: -------------------------------------------------------------------------------- 1 | fromY(identity): B => A -------------------------------------------------------------------------------- /src/content/2.6/yoneda-embedding.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/2.6/yoneda-embedding.tex -------------------------------------------------------------------------------- /src/content/3.1/images/sheets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.1/images/sheets.png -------------------------------------------------------------------------------- /src/content/3.10/code/haskell/snippet02.hs: -------------------------------------------------------------------------------- 1 | dimap f id (p b b) :: p a b -------------------------------------------------------------------------------- /src/content/3.10/code/haskell/snippet05.hs: -------------------------------------------------------------------------------- 1 | forall a. p a a -------------------------------------------------------------------------------- /src/content/3.10/code/haskell/snippet13.hs: -------------------------------------------------------------------------------- 1 | forall a. f a -> g a -------------------------------------------------------------------------------- /src/content/3.10/code/ocaml/snippet02.ml: -------------------------------------------------------------------------------- 1 | let dimap f id (P (b, b)) : ('a, 'b) p 2 | -------------------------------------------------------------------------------- /src/content/3.10/code/ocaml/snippet03.ml: -------------------------------------------------------------------------------- 1 | let dimap id f (P (a, a)) : ('a, 'b) p 2 | -------------------------------------------------------------------------------- /src/content/3.10/code/ocaml/snippet05.ml: -------------------------------------------------------------------------------- 1 | 'a. ('a, 'a) p 2 | -------------------------------------------------------------------------------- /src/content/3.10/code/reason/snippet02.re: -------------------------------------------------------------------------------- 1 | let dimap(f, id, (P (b, b))) : p('a, 'b); -------------------------------------------------------------------------------- /src/content/3.10/code/reason/snippet03.re: -------------------------------------------------------------------------------- 1 | let dimap(id, f, (P (a, a))) : p('a, 'b); -------------------------------------------------------------------------------- /src/content/3.10/code/reason/snippet05.re: -------------------------------------------------------------------------------- 1 | 'a. p('a, 'a); -------------------------------------------------------------------------------- /src/content/3.10/code/scala/snippet02.scala: -------------------------------------------------------------------------------- 1 | dimap(f)(identity[B])(pbb): P[A, B] -------------------------------------------------------------------------------- /src/content/3.10/code/scala/snippet03.scala: -------------------------------------------------------------------------------- 1 | dimap(identity[A])(f)(paa): P[A, B] -------------------------------------------------------------------------------- /src/content/3.10/code/scala/snippet11.scala: -------------------------------------------------------------------------------- 1 | case class DiaProd[P[_, _]](paa: PolyFunction1[P]) -------------------------------------------------------------------------------- /src/content/3.10/code/scala/snippet14.scala: -------------------------------------------------------------------------------- 1 | trait Coend[P[_, _]] { 2 | def paa[A]: P[A, A] 3 | } -------------------------------------------------------------------------------- /src/content/3.10/code/scala/snippet17.scala: -------------------------------------------------------------------------------- 1 | trait DiagSum[P[_, _]]{ 2 | def paa[A]: P[A, A] 3 | } -------------------------------------------------------------------------------- /src/content/3.10/ends-and-coends.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.10/ends-and-coends.tex -------------------------------------------------------------------------------- /src/content/3.10/images/end-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.10/images/end-1.jpg -------------------------------------------------------------------------------- /src/content/3.10/images/end-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.10/images/end-2.jpg -------------------------------------------------------------------------------- /src/content/3.10/images/end-21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.10/images/end-21.jpg -------------------------------------------------------------------------------- /src/content/3.10/images/end-31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.10/images/end-31.jpg -------------------------------------------------------------------------------- /src/content/3.10/images/end.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.10/images/end.jpg -------------------------------------------------------------------------------- /src/content/3.10/images/end1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.10/images/end1.jpg -------------------------------------------------------------------------------- /src/content/3.11/code/haskell/snippet02.hs: -------------------------------------------------------------------------------- 1 | f :: String -> Tree Int -------------------------------------------------------------------------------- /src/content/3.11/code/haskell/snippet07.hs: -------------------------------------------------------------------------------- 1 | type Exp a b = Lan ((,) a) I b -------------------------------------------------------------------------------- /src/content/3.11/code/haskell/snippet09.hs: -------------------------------------------------------------------------------- 1 | data FreeF f a = forall i. FMap (i -> a) (f i) -------------------------------------------------------------------------------- /src/content/3.11/code/ocaml/snippet02.ml: -------------------------------------------------------------------------------- 1 | val f : string -> int tree 2 | -------------------------------------------------------------------------------- /src/content/3.11/code/reason/snippet02.re: -------------------------------------------------------------------------------- 1 | let f: string => tree(int); 2 | -------------------------------------------------------------------------------- /src/content/3.11/code/scala/snippet02.scala: -------------------------------------------------------------------------------- 1 | def f: String => Tree[Int] -------------------------------------------------------------------------------- /src/content/3.11/code/scala/snippet11.scala: -------------------------------------------------------------------------------- 1 | case class FreeF[F[_], A](r: (A => ?) ~> F) -------------------------------------------------------------------------------- /src/content/3.11/images/kan10a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.11/images/kan10a.jpg -------------------------------------------------------------------------------- /src/content/3.11/images/kan10b.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.11/images/kan10b.jpg -------------------------------------------------------------------------------- /src/content/3.11/images/kan112.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.11/images/kan112.jpg -------------------------------------------------------------------------------- /src/content/3.11/images/kan12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.11/images/kan12.jpg -------------------------------------------------------------------------------- /src/content/3.11/images/kan13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.11/images/kan13.jpg -------------------------------------------------------------------------------- /src/content/3.11/images/kan14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.11/images/kan14.jpg -------------------------------------------------------------------------------- /src/content/3.11/images/kan15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.11/images/kan15.jpg -------------------------------------------------------------------------------- /src/content/3.11/images/kan2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.11/images/kan2.jpg -------------------------------------------------------------------------------- /src/content/3.11/images/kan5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.11/images/kan5.jpg -------------------------------------------------------------------------------- /src/content/3.11/images/kan6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.11/images/kan6.jpg -------------------------------------------------------------------------------- /src/content/3.11/images/kan7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.11/images/kan7.jpg -------------------------------------------------------------------------------- /src/content/3.11/images/kan81.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.11/images/kan81.jpg -------------------------------------------------------------------------------- /src/content/3.11/images/kan92.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.11/images/kan92.jpg -------------------------------------------------------------------------------- /src/content/3.11/kan-extensions.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.11/kan-extensions.tex -------------------------------------------------------------------------------- /src/content/3.12/images/id.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.12/images/id.jpg -------------------------------------------------------------------------------- /src/content/3.13/images/notmono.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.13/images/notmono.jpg -------------------------------------------------------------------------------- /src/content/3.13/images/pullback.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.13/images/pullback.jpg -------------------------------------------------------------------------------- /src/content/3.13/images/true.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.13/images/true.jpg -------------------------------------------------------------------------------- /src/content/3.13/topoi.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.13/topoi.tex -------------------------------------------------------------------------------- /src/content/3.14/code/haskell/snippet01.hs: -------------------------------------------------------------------------------- 1 | type Two = Either () () -------------------------------------------------------------------------------- /src/content/3.14/code/haskell/snippet02.hs: -------------------------------------------------------------------------------- 1 | raise :: () -> a -------------------------------------------------------------------------------- /src/content/3.14/code/haskell/snippet03.hs: -------------------------------------------------------------------------------- 1 | type Maybe a = Either () a -------------------------------------------------------------------------------- /src/content/3.14/code/haskell/snippet04.hs: -------------------------------------------------------------------------------- 1 | data Maybe a = Nothing | Just a -------------------------------------------------------------------------------- /src/content/3.14/code/ocaml/snippet02.ml: -------------------------------------------------------------------------------- 1 | val raise : unit -> 'a 2 | -------------------------------------------------------------------------------- /src/content/3.14/code/ocaml/snippet03.ml: -------------------------------------------------------------------------------- 1 | type 'a option = (unit, 'a) either 2 | -------------------------------------------------------------------------------- /src/content/3.14/code/reason/snippet02.re: -------------------------------------------------------------------------------- 1 | let raise: unit => 'a; 2 | -------------------------------------------------------------------------------- /src/content/3.14/code/reason/snippet03.re: -------------------------------------------------------------------------------- 1 | type option('a) = either(unit, 'a); 2 | -------------------------------------------------------------------------------- /src/content/3.14/code/scala/snippet02.scala: -------------------------------------------------------------------------------- 1 | def raise: Unit => A -------------------------------------------------------------------------------- /src/content/3.14/code/scala/snippet03.scala: -------------------------------------------------------------------------------- 1 | type Option[A] = Either[Unit, A] -------------------------------------------------------------------------------- /src/content/3.14/images/lawvere1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.14/images/lawvere1.png -------------------------------------------------------------------------------- /src/content/3.14/images/liftpower.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.14/images/liftpower.png -------------------------------------------------------------------------------- /src/content/3.14/lawvere-theories.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.14/lawvere-theories.tex -------------------------------------------------------------------------------- /src/content/3.15/images/bicat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.15/images/bicat.png -------------------------------------------------------------------------------- /src/content/3.15/images/bimonad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.15/images/bimonad.png -------------------------------------------------------------------------------- /src/content/3.15/images/compspan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.15/images/compspan.png -------------------------------------------------------------------------------- /src/content/3.15/images/monad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.15/images/monad.png -------------------------------------------------------------------------------- /src/content/3.15/images/morphspan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.15/images/morphspan.png -------------------------------------------------------------------------------- /src/content/3.15/images/pullspan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.15/images/pullspan.png -------------------------------------------------------------------------------- /src/content/3.15/images/span.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.15/images/span.png -------------------------------------------------------------------------------- /src/content/3.15/images/spanmonad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.15/images/spanmonad.png -------------------------------------------------------------------------------- /src/content/3.15/images/spanmul.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.15/images/spanmul.png -------------------------------------------------------------------------------- /src/content/3.15/images/spanunit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.15/images/spanunit.png -------------------------------------------------------------------------------- /src/content/3.15/images/twocat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.15/images/twocat.png -------------------------------------------------------------------------------- /src/content/3.2/adjunctions.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.2/adjunctions.tex -------------------------------------------------------------------------------- /src/content/3.2/code/haskell/snippet02.hs: -------------------------------------------------------------------------------- 1 | return :: d -> m d -------------------------------------------------------------------------------- /src/content/3.2/code/haskell/snippet03.hs: -------------------------------------------------------------------------------- 1 | extract :: w c -> c -------------------------------------------------------------------------------- /src/content/3.2/code/ocaml/snippet01.ml: -------------------------------------------------------------------------------- 1 | let swap (a, b) = b, a 2 | -------------------------------------------------------------------------------- /src/content/3.2/code/reason/snippet01.re: -------------------------------------------------------------------------------- 1 | let swap = (a, b) => (b, a); 2 | -------------------------------------------------------------------------------- /src/content/3.2/code/scala/snippet02.scala: -------------------------------------------------------------------------------- 1 | // return is a keyword in Scala 2 | def pure[D]: D => M[D] -------------------------------------------------------------------------------- /src/content/3.2/code/scala/snippet03.scala: -------------------------------------------------------------------------------- 1 | def extract[C]: W[C] => C -------------------------------------------------------------------------------- /src/content/3.2/images/adj-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.2/images/adj-1.jpg -------------------------------------------------------------------------------- /src/content/3.2/images/adj-counit.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.2/images/adj-counit.jpg -------------------------------------------------------------------------------- /src/content/3.2/images/adj-expo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.2/images/adj-expo.jpg -------------------------------------------------------------------------------- /src/content/3.2/images/adj-homsets.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.2/images/adj-homsets.jpg -------------------------------------------------------------------------------- /src/content/3.2/images/adj-product.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.2/images/adj-product.jpg -------------------------------------------------------------------------------- /src/content/3.2/images/adj-unit.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.2/images/adj-unit.jpg -------------------------------------------------------------------------------- /src/content/3.3/code/haskell/snippet01.hs: -------------------------------------------------------------------------------- 1 | type String = [Char] -------------------------------------------------------------------------------- /src/content/3.3/code/ocaml/snippet01.ml: -------------------------------------------------------------------------------- 1 | type string = char list 2 | -------------------------------------------------------------------------------- /src/content/3.3/code/reason/snippet01.re: -------------------------------------------------------------------------------- 1 | type string = list(char); 2 | -------------------------------------------------------------------------------- /src/content/3.3/code/scala/snippet01.scala: -------------------------------------------------------------------------------- 1 | type String = List[Char] -------------------------------------------------------------------------------- /src/content/3.3/images/forgetful.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.3/images/forgetful.jpg -------------------------------------------------------------------------------- /src/content/3.3/images/freeimage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.3/images/freeimage.jpg -------------------------------------------------------------------------------- /src/content/3.4/code/haskell/snippet03.hs: -------------------------------------------------------------------------------- 1 | a -> Writer w b -------------------------------------------------------------------------------- /src/content/3.4/code/haskell/snippet12.hs: -------------------------------------------------------------------------------- 1 | join :: m (m a) -> m a -------------------------------------------------------------------------------- /src/content/3.4/code/haskell/snippet13.hs: -------------------------------------------------------------------------------- 1 | ma >>= f = join (fmap f ma) -------------------------------------------------------------------------------- /src/content/3.4/code/haskell/snippet21.hs: -------------------------------------------------------------------------------- 1 | upStr <- upCase s -------------------------------------------------------------------------------- /src/content/3.4/code/ocaml/snippet03.ml: -------------------------------------------------------------------------------- 1 | 'a -> ('w, 'b) writer 2 | -------------------------------------------------------------------------------- /src/content/3.4/code/ocaml/snippet06.ml: -------------------------------------------------------------------------------- 1 | let tell w = Writer ((), w) 2 | -------------------------------------------------------------------------------- /src/content/3.4/code/ocaml/snippet07.ml: -------------------------------------------------------------------------------- 1 | let (>=>) f g = fun a -> ... 2 | -------------------------------------------------------------------------------- /src/content/3.4/code/reason/snippet03.re: -------------------------------------------------------------------------------- 1 | 'a => writer('w, 'b) -------------------------------------------------------------------------------- /src/content/3.4/code/reason/snippet06.re: -------------------------------------------------------------------------------- 1 | let tell = w => Writer((), w); 2 | -------------------------------------------------------------------------------- /src/content/3.4/code/reason/snippet21.re: -------------------------------------------------------------------------------- 1 | up_str = up_case(s) -------------------------------------------------------------------------------- /src/content/3.4/code/scala/snippet03.scala: -------------------------------------------------------------------------------- 1 | A => Writer[W, B] -------------------------------------------------------------------------------- /src/content/3.4/code/scala/snippet21.scala: -------------------------------------------------------------------------------- 1 | upStr <- upCase(s) -------------------------------------------------------------------------------- /src/content/3.5/code/haskell/snippet02.hs: -------------------------------------------------------------------------------- 1 | as >>= k = concat (fmap k as) -------------------------------------------------------------------------------- /src/content/3.5/code/haskell/snippet08.hs: -------------------------------------------------------------------------------- 1 | ra >>= k = Reader (\e -> ...) -------------------------------------------------------------------------------- /src/content/3.5/code/haskell/snippet26.hs: -------------------------------------------------------------------------------- 1 | ka >>= kab = Cont (\hb -> ...) -------------------------------------------------------------------------------- /src/content/3.5/code/haskell/snippet27.hs: -------------------------------------------------------------------------------- 1 | runCont ka (\a -> ...) -------------------------------------------------------------------------------- /src/content/3.5/code/haskell/snippet30.hs: -------------------------------------------------------------------------------- 1 | getChar :: () -> IO Char -------------------------------------------------------------------------------- /src/content/3.5/code/haskell/snippet31.hs: -------------------------------------------------------------------------------- 1 | main :: IO () -------------------------------------------------------------------------------- /src/content/3.5/code/haskell/snippet32.hs: -------------------------------------------------------------------------------- 1 | main :: () -> IO () -------------------------------------------------------------------------------- /src/content/3.5/code/haskell/snippet34.hs: -------------------------------------------------------------------------------- 1 | type IO = State RealWorld -------------------------------------------------------------------------------- /src/content/3.5/code/haskell/snippet35.hs: -------------------------------------------------------------------------------- 1 | putStr :: String -> IO () -------------------------------------------------------------------------------- /src/content/3.5/code/haskell/snippet36.hs: -------------------------------------------------------------------------------- 1 | putStr :: String -> () -------------------------------------------------------------------------------- /src/content/3.5/code/ocaml/snippet08.ml: -------------------------------------------------------------------------------- 1 | let (>>=) ra k = Reader (fun e -> ...) 2 | -------------------------------------------------------------------------------- /src/content/3.5/code/ocaml/snippet20.ml: -------------------------------------------------------------------------------- 1 | let get = State (fun s -> s, s) 2 | -------------------------------------------------------------------------------- /src/content/3.5/code/ocaml/snippet21.ml: -------------------------------------------------------------------------------- 1 | let put s' = State (fun s -> (), s') 2 | -------------------------------------------------------------------------------- /src/content/3.5/code/ocaml/snippet27.ml: -------------------------------------------------------------------------------- 1 | run_cont ka (fun a -> ...) 2 | -------------------------------------------------------------------------------- /src/content/3.5/code/ocaml/snippet31.ml: -------------------------------------------------------------------------------- 1 | val main : unit io 2 | -------------------------------------------------------------------------------- /src/content/3.5/code/ocaml/snippet34.ml: -------------------------------------------------------------------------------- 1 | type 'a io = realworld state 2 | -------------------------------------------------------------------------------- /src/content/3.5/code/ocaml/snippet35.ml: -------------------------------------------------------------------------------- 1 | val put_str : string -> unit io 2 | -------------------------------------------------------------------------------- /src/content/3.5/code/ocaml/snippet36.ml: -------------------------------------------------------------------------------- 1 | val put_str : string -> unit 2 | -------------------------------------------------------------------------------- /src/content/3.5/code/reason/snippet20.re: -------------------------------------------------------------------------------- 1 | let get = State(s => (s, s)); 2 | -------------------------------------------------------------------------------- /src/content/3.5/code/reason/snippet24.re: -------------------------------------------------------------------------------- 1 | let run_cont = (Cont(k), h) => k(h); 2 | -------------------------------------------------------------------------------- /src/content/3.5/code/reason/snippet27.re: -------------------------------------------------------------------------------- 1 | run_cont(ka, a => ...); 2 | -------------------------------------------------------------------------------- /src/content/3.5/code/reason/snippet31.re: -------------------------------------------------------------------------------- 1 | let main: io(unit); 2 | -------------------------------------------------------------------------------- /src/content/3.5/code/reason/snippet34.re: -------------------------------------------------------------------------------- 1 | type io('a) = state(realworld); 2 | -------------------------------------------------------------------------------- /src/content/3.5/code/reason/snippet35.re: -------------------------------------------------------------------------------- 1 | let put_str: string => io(unit); 2 | -------------------------------------------------------------------------------- /src/content/3.5/code/reason/snippet36.re: -------------------------------------------------------------------------------- 1 | let put_str: string => unit; 2 | -------------------------------------------------------------------------------- /src/content/3.5/code/scala/snippet06.scala: -------------------------------------------------------------------------------- 1 | case class Reader[E, A](run: E => A) -------------------------------------------------------------------------------- /src/content/3.5/code/scala/snippet13.scala: -------------------------------------------------------------------------------- 1 | case class Writer[W, A](run: (A, W)) -------------------------------------------------------------------------------- /src/content/3.5/code/scala/snippet16.scala: -------------------------------------------------------------------------------- 1 | case class State[S, A](run: S => (A, S)) -------------------------------------------------------------------------------- /src/content/3.5/code/scala/snippet27.scala: -------------------------------------------------------------------------------- 1 | runCont(ka)(a => ...) -------------------------------------------------------------------------------- /src/content/3.5/code/scala/snippet30.scala: -------------------------------------------------------------------------------- 1 | def getChar: Unit => IO[Char] 2 | -------------------------------------------------------------------------------- /src/content/3.5/code/scala/snippet31.scala: -------------------------------------------------------------------------------- 1 | def main: IO[Unit] -------------------------------------------------------------------------------- /src/content/3.5/code/scala/snippet34.scala: -------------------------------------------------------------------------------- 1 | type IO[A] = State[RealWorld, A] -------------------------------------------------------------------------------- /src/content/3.5/code/scala/snippet35.scala: -------------------------------------------------------------------------------- 1 | def putStr: String => IO[Unit] -------------------------------------------------------------------------------- /src/content/3.5/code/scala/snippet36.scala: -------------------------------------------------------------------------------- 1 | def putStr: String => Unit -------------------------------------------------------------------------------- /src/content/3.5/monads-and-effects.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.5/monads-and-effects.tex -------------------------------------------------------------------------------- /src/content/3.6/code/haskell/snippet02.hs: -------------------------------------------------------------------------------- 1 | (f >=> g) a = join (fmap g (f a)) -------------------------------------------------------------------------------- /src/content/3.6/code/haskell/snippet05.hs: -------------------------------------------------------------------------------- 1 | mu :: (m, m) -> m -------------------------------------------------------------------------------- /src/content/3.6/code/haskell/snippet06.hs: -------------------------------------------------------------------------------- 1 | eta :: () -> m -------------------------------------------------------------------------------- /src/content/3.6/code/haskell/snippet08.hs: -------------------------------------------------------------------------------- 1 | (mu . bimap id mu)(x, (y, z)) -------------------------------------------------------------------------------- /src/content/3.6/code/haskell/snippet09.hs: -------------------------------------------------------------------------------- 1 | (mu . bimap mu id)((x, y), z) -------------------------------------------------------------------------------- /src/content/3.6/code/ocaml/snippet05.ml: -------------------------------------------------------------------------------- 1 | val mu : (m, m) -> m 2 | -------------------------------------------------------------------------------- /src/content/3.6/code/ocaml/snippet06.ml: -------------------------------------------------------------------------------- 1 | val eta : unit -> m 2 | -------------------------------------------------------------------------------- /src/content/3.6/code/ocaml/snippet08.ml: -------------------------------------------------------------------------------- 1 | ;; 2 | (compose mu (bimap id mu)) (x, (y, z)) 3 | -------------------------------------------------------------------------------- /src/content/3.6/code/ocaml/snippet15.ml: -------------------------------------------------------------------------------- 1 | let lambda ((), x) = x 2 | -------------------------------------------------------------------------------- /src/content/3.6/code/ocaml/snippet16.ml: -------------------------------------------------------------------------------- 1 | let rho (x, ()) = x 2 | -------------------------------------------------------------------------------- /src/content/3.6/code/reason/snippet04.re: -------------------------------------------------------------------------------- 1 | let mappend: (m, m) => m; 2 | -------------------------------------------------------------------------------- /src/content/3.6/code/reason/snippet05.re: -------------------------------------------------------------------------------- 1 | let mu: (m, m) => m; 2 | -------------------------------------------------------------------------------- /src/content/3.6/code/reason/snippet06.re: -------------------------------------------------------------------------------- 1 | let eta: unit => m = ; 2 | -------------------------------------------------------------------------------- /src/content/3.6/code/reason/snippet08.re: -------------------------------------------------------------------------------- 1 | 2 | (compose(mu, bimap(id, mu)))((x, (y, z))); 3 | -------------------------------------------------------------------------------- /src/content/3.6/code/reason/snippet15.re: -------------------------------------------------------------------------------- 1 | let lambda = (((), x)) => x; 2 | -------------------------------------------------------------------------------- /src/content/3.6/code/reason/snippet16.re: -------------------------------------------------------------------------------- 1 | let rho = ((x, ())) => x; 2 | -------------------------------------------------------------------------------- /src/content/3.6/code/scala/snippet04.scala: -------------------------------------------------------------------------------- 1 | def combine(x: M): (M => M) -------------------------------------------------------------------------------- /src/content/3.6/code/scala/snippet05.scala: -------------------------------------------------------------------------------- 1 | def mu: ((M, M)) => M -------------------------------------------------------------------------------- /src/content/3.6/code/scala/snippet06.scala: -------------------------------------------------------------------------------- 1 | def eta: Unit => M -------------------------------------------------------------------------------- /src/content/3.6/code/scala/snippet08.scala: -------------------------------------------------------------------------------- 1 | mu compose bimap(identity)(mu) -------------------------------------------------------------------------------- /src/content/3.6/code/scala/snippet09.scala: -------------------------------------------------------------------------------- 1 | mu compose bimap(mu)(identity) -------------------------------------------------------------------------------- /src/content/3.6/code/scala/snippet18.scala: -------------------------------------------------------------------------------- 1 | case class State[S, A](run: S => (A, S)) -------------------------------------------------------------------------------- /src/content/3.6/code/scala/snippet19.scala: -------------------------------------------------------------------------------- 1 | case class Prod[S, A](run: (A, S)) -------------------------------------------------------------------------------- /src/content/3.6/code/scala/snippet20.scala: -------------------------------------------------------------------------------- 1 | case class Reader[S, A](run: S => A) -------------------------------------------------------------------------------- /src/content/3.6/code/scala/snippet22.scala: -------------------------------------------------------------------------------- 1 | case class State[S, A](run: S => (A, S)) -------------------------------------------------------------------------------- /src/content/3.6/images/assoc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.6/images/assoc.png -------------------------------------------------------------------------------- /src/content/3.6/images/assoc1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.6/images/assoc1.png -------------------------------------------------------------------------------- /src/content/3.6/images/assoc2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.6/images/assoc2.png -------------------------------------------------------------------------------- /src/content/3.6/images/assocmon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.6/images/assocmon.png -------------------------------------------------------------------------------- /src/content/3.6/images/assoctensor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.6/images/assoctensor.jpg -------------------------------------------------------------------------------- /src/content/3.6/images/exptree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.6/images/exptree.png -------------------------------------------------------------------------------- /src/content/3.6/images/horizcomp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.6/images/horizcomp.png -------------------------------------------------------------------------------- /src/content/3.6/images/monoid-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.6/images/monoid-1.jpg -------------------------------------------------------------------------------- /src/content/3.6/images/unitlawcomp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.6/images/unitlawcomp.png -------------------------------------------------------------------------------- /src/content/3.6/images/unitmon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.6/images/unitmon.jpg -------------------------------------------------------------------------------- /src/content/3.7/code/haskell/snippet01.hs: -------------------------------------------------------------------------------- 1 | a -> m b -------------------------------------------------------------------------------- /src/content/3.7/code/haskell/snippet02.hs: -------------------------------------------------------------------------------- 1 | w a -> b -------------------------------------------------------------------------------- /src/content/3.7/code/haskell/snippet04.hs: -------------------------------------------------------------------------------- 1 | extract :: w a -> a -------------------------------------------------------------------------------- /src/content/3.7/code/haskell/snippet06.hs: -------------------------------------------------------------------------------- 1 | (a, e) -> b -------------------------------------------------------------------------------- /src/content/3.7/code/haskell/snippet10.hs: -------------------------------------------------------------------------------- 1 | extract (Prod e a) = a -------------------------------------------------------------------------------- /src/content/3.7/code/haskell/snippet18.hs: -------------------------------------------------------------------------------- 1 | extract (Cons a _) = a -------------------------------------------------------------------------------- /src/content/3.7/code/haskell/snippet26.hs: -------------------------------------------------------------------------------- 1 | destroy _ = () -------------------------------------------------------------------------------- /src/content/3.7/code/haskell/snippet27.hs: -------------------------------------------------------------------------------- 1 | split x = (f x, g x) -------------------------------------------------------------------------------- /src/content/3.7/code/haskell/snippet30.hs: -------------------------------------------------------------------------------- 1 | split x = (x, x) -------------------------------------------------------------------------------- /src/content/3.7/code/haskell/snippet32.hs: -------------------------------------------------------------------------------- 1 | counit (Prod (Reader f) s)) = f s -------------------------------------------------------------------------------- /src/content/3.7/code/haskell/snippet38.hs: -------------------------------------------------------------------------------- 1 | a -> Store s a -------------------------------------------------------------------------------- /src/content/3.7/code/ocaml/snippet01.ml: -------------------------------------------------------------------------------- 1 | 'a -> 'b m 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/ocaml/snippet02.ml: -------------------------------------------------------------------------------- 1 | 'a w -> 'b 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/ocaml/snippet04.ml: -------------------------------------------------------------------------------- 1 | val extract : 'a w -> 'a 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/ocaml/snippet06.ml: -------------------------------------------------------------------------------- 1 | 'a * 'e -> 'b 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/ocaml/snippet08.ml: -------------------------------------------------------------------------------- 1 | type ('e, 'a) product = P of 'e * 'a 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/ocaml/snippet10.ml: -------------------------------------------------------------------------------- 1 | let extract (P (e, a)) = a 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/ocaml/snippet18.ml: -------------------------------------------------------------------------------- 1 | let extract (Cons (x, _)) = x 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/ocaml/snippet21.ml: -------------------------------------------------------------------------------- 1 | let tail (Cons (_, xs)) = Lazy.force xs 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/ocaml/snippet26.ml: -------------------------------------------------------------------------------- 1 | let destroy _ = () 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/ocaml/snippet27.ml: -------------------------------------------------------------------------------- 1 | let split x = f x, g x 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/ocaml/snippet30.ml: -------------------------------------------------------------------------------- 1 | let split x = x, x 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/ocaml/snippet32.ml: -------------------------------------------------------------------------------- 1 | let counit (Prod (Reader f, s)) = f s 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/ocaml/snippet33.ml: -------------------------------------------------------------------------------- 1 | let extract (Store (f, s)) = f s 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/ocaml/snippet34.ml: -------------------------------------------------------------------------------- 1 | let unit a = Reader (fun s -> Prod (a, s)) 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/ocaml/snippet38.ml: -------------------------------------------------------------------------------- 1 | 'a -> ('s, 'a) store 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/reason/snippet01.re: -------------------------------------------------------------------------------- 1 | 'a => m('b); -------------------------------------------------------------------------------- /src/content/3.7/code/reason/snippet02.re: -------------------------------------------------------------------------------- 1 | w('a) => 'b; -------------------------------------------------------------------------------- /src/content/3.7/code/reason/snippet04.re: -------------------------------------------------------------------------------- 1 | let extract: w('a) => 'a; 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/reason/snippet06.re: -------------------------------------------------------------------------------- 1 | (('a, 'e)) => 'b; -------------------------------------------------------------------------------- /src/content/3.7/code/reason/snippet07.re: -------------------------------------------------------------------------------- 1 | ('a, 'e) => 'b; -------------------------------------------------------------------------------- /src/content/3.7/code/reason/snippet10.re: -------------------------------------------------------------------------------- 1 | let extract = (P(e, a)) => a; 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/reason/snippet18.re: -------------------------------------------------------------------------------- 1 | let extract = (Cons(x, _)) => x; 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/reason/snippet21.re: -------------------------------------------------------------------------------- 1 | let tail = (Cons(_, xs)) => Lazy.force(xs); 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/reason/snippet26.re: -------------------------------------------------------------------------------- 1 | let destroy = _ => (); 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/reason/snippet27.re: -------------------------------------------------------------------------------- 1 | let split = x => (f(x), g(x)); 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/reason/snippet30.re: -------------------------------------------------------------------------------- 1 | let split = x => (x, x); 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/reason/snippet32.re: -------------------------------------------------------------------------------- 1 | let counit = (Prod(Reader(f), s)) => f(s); 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/reason/snippet33.re: -------------------------------------------------------------------------------- 1 | let extract = (Store(f, s)) => f(s); 2 | -------------------------------------------------------------------------------- /src/content/3.7/code/reason/snippet38.re: -------------------------------------------------------------------------------- 1 | 'a => store('s, 'a); -------------------------------------------------------------------------------- /src/content/3.7/code/scala/snippet01.scala: -------------------------------------------------------------------------------- 1 | A => M[B] -------------------------------------------------------------------------------- /src/content/3.7/code/scala/snippet02.scala: -------------------------------------------------------------------------------- 1 | W[A] => B -------------------------------------------------------------------------------- /src/content/3.7/code/scala/snippet04.scala: -------------------------------------------------------------------------------- 1 | def extract[A](wa: W[A]): A -------------------------------------------------------------------------------- /src/content/3.7/code/scala/snippet06.scala: -------------------------------------------------------------------------------- 1 | ((A, E)) => B -------------------------------------------------------------------------------- /src/content/3.7/code/scala/snippet26.scala: -------------------------------------------------------------------------------- 1 | def destroy(x: M): Unit = () -------------------------------------------------------------------------------- /src/content/3.7/code/scala/snippet30.scala: -------------------------------------------------------------------------------- 1 | def split(x: M): (M, M) = (x, x) -------------------------------------------------------------------------------- /src/content/3.7/code/scala/snippet31.scala: -------------------------------------------------------------------------------- 1 | case class Store[S, A](run: S => A, s: S) -------------------------------------------------------------------------------- /src/content/3.7/code/scala/snippet38.scala: -------------------------------------------------------------------------------- 1 | A => Store[S, A] -------------------------------------------------------------------------------- /src/content/3.7/comonads.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.7/comonads.tex -------------------------------------------------------------------------------- /src/content/3.8/code/haskell/snippet02.hs: -------------------------------------------------------------------------------- 1 | data MonF a = MEmpty | MAppend a a -------------------------------------------------------------------------------- /src/content/3.8/code/haskell/snippet14.hs: -------------------------------------------------------------------------------- 1 | data NatF a = ZeroF | SuccF a -------------------------------------------------------------------------------- /src/content/3.8/code/haskell/snippet15.hs: -------------------------------------------------------------------------------- 1 | data Nat = Zero | Succ Nat -------------------------------------------------------------------------------- /src/content/3.8/code/haskell/snippet17.hs: -------------------------------------------------------------------------------- 1 | data NatF a = ZeroF | SuccF a -------------------------------------------------------------------------------- /src/content/3.8/code/haskell/snippet22.hs: -------------------------------------------------------------------------------- 1 | length = foldr (\e n -> n + 1) 0 -------------------------------------------------------------------------------- /src/content/3.8/code/haskell/snippet24.hs: -------------------------------------------------------------------------------- 1 | sum = foldr (\e s -> e + s) 0.0 -------------------------------------------------------------------------------- /src/content/3.8/code/haskell/snippet29.hs: -------------------------------------------------------------------------------- 1 | primes = ana era [2..] -------------------------------------------------------------------------------- /src/content/3.8/code/haskell/snippet34.hs: -------------------------------------------------------------------------------- 1 | a -> Store s a -------------------------------------------------------------------------------- /src/content/3.8/code/ocaml/snippet33.ml: -------------------------------------------------------------------------------- 1 | (a, (s, s -> a)) 2 | -------------------------------------------------------------------------------- /src/content/3.8/code/ocaml/snippet34.ml: -------------------------------------------------------------------------------- 1 | 'a -> ('s, 'a) store 2 | -------------------------------------------------------------------------------- /src/content/3.8/code/reason/snippet33.re: -------------------------------------------------------------------------------- 1 | (a, (s, s => a)); -------------------------------------------------------------------------------- /src/content/3.8/code/reason/snippet34.re: -------------------------------------------------------------------------------- 1 | 'a => store('s, 'a); -------------------------------------------------------------------------------- /src/content/3.8/code/scala/snippet22.scala: -------------------------------------------------------------------------------- 1 | def length[E](l: List[E]): Int = 2 | l.foldRight(0)((e, n) => n + 1) -------------------------------------------------------------------------------- /src/content/3.8/code/scala/snippet34.scala: -------------------------------------------------------------------------------- 1 | A => Store[S, A] -------------------------------------------------------------------------------- /src/content/3.8/code/scala/snippet35.scala: -------------------------------------------------------------------------------- 1 | case class Store[S, A](run: S => A, s: S) -------------------------------------------------------------------------------- /src/content/3.8/f-algebras.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.8/f-algebras.tex -------------------------------------------------------------------------------- /src/content/3.8/images/alg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.8/images/alg.png -------------------------------------------------------------------------------- /src/content/3.8/images/alg2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.8/images/alg2.png -------------------------------------------------------------------------------- /src/content/3.8/images/alg3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.8/images/alg3.png -------------------------------------------------------------------------------- /src/content/3.8/images/alg3a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.8/images/alg3a.png -------------------------------------------------------------------------------- /src/content/3.8/images/alg4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.8/images/alg4.png -------------------------------------------------------------------------------- /src/content/3.8/images/alg5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.8/images/alg5.png -------------------------------------------------------------------------------- /src/content/3.8/images/alg6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.8/images/alg6.png -------------------------------------------------------------------------------- /src/content/3.8/images/alg7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.8/images/alg7.png -------------------------------------------------------------------------------- /src/content/3.9/code/haskell/snippet03.hs: -------------------------------------------------------------------------------- 1 | foldr f z [x] = x `f` z -------------------------------------------------------------------------------- /src/content/3.9/code/haskell/snippet04.hs: -------------------------------------------------------------------------------- 1 | x `f` z = x -------------------------------------------------------------------------------- /src/content/3.9/code/haskell/snippet06.hs: -------------------------------------------------------------------------------- 1 | return . f -------------------------------------------------------------------------------- /src/content/3.9/code/haskell/snippet15.hs: -------------------------------------------------------------------------------- 1 | get (set a s) = s -------------------------------------------------------------------------------- /src/content/3.9/code/ocaml/snippet04.ml: -------------------------------------------------------------------------------- 1 | ;; 2 | f x z = x 3 | -------------------------------------------------------------------------------- /src/content/3.9/code/ocaml/snippet06.ml: -------------------------------------------------------------------------------- 1 | module C_to_CT (T : Monad) = struct 2 | let on_objects = T.return <.> f 3 | end 4 | -------------------------------------------------------------------------------- /src/content/3.9/code/ocaml/snippet15.ml: -------------------------------------------------------------------------------- 1 | ;; 2 | get (set a s) = s 3 | -------------------------------------------------------------------------------- /src/content/3.9/code/reason/snippet04.re: -------------------------------------------------------------------------------- 1 | f(x, z) == x; 2 | -------------------------------------------------------------------------------- /src/content/3.9/code/reason/snippet06.re: -------------------------------------------------------------------------------- 1 | module C_to_CT = (T: Monad) => { 2 | let on_objects = T.return <.> f; 3 | }; 4 | -------------------------------------------------------------------------------- /src/content/3.9/code/reason/snippet15.re: -------------------------------------------------------------------------------- 1 | get(set(a, s)) == s; 2 | -------------------------------------------------------------------------------- /src/content/3.9/code/scala/snippet04.scala: -------------------------------------------------------------------------------- 1 | f(x)(z) == x -------------------------------------------------------------------------------- /src/content/3.9/code/scala/snippet06.scala: -------------------------------------------------------------------------------- 1 | unit compose f -------------------------------------------------------------------------------- /src/content/3.9/code/scala/snippet15.scala: -------------------------------------------------------------------------------- 1 | get(set(a)(s)) == s -------------------------------------------------------------------------------- /src/content/3.9/images/pigalg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/3.9/images/pigalg.png -------------------------------------------------------------------------------- /src/content/editor-note.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/editor-note.tex -------------------------------------------------------------------------------- /src/content/ocaml/colophon.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/ocaml/colophon.tex -------------------------------------------------------------------------------- /src/content/ocaml/editor-note.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/ocaml/editor-note.tex -------------------------------------------------------------------------------- /src/content/reason/colophon.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/reason/colophon.tex -------------------------------------------------------------------------------- /src/content/reason/editor-note.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/reason/editor-note.tex -------------------------------------------------------------------------------- /src/content/scala/colophon.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/scala/colophon.tex -------------------------------------------------------------------------------- /src/content/scala/editor-note.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/content/scala/editor-note.tex -------------------------------------------------------------------------------- /src/cover/bartosz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/cover/bartosz.jpg -------------------------------------------------------------------------------- /src/cover/blurb.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/cover/blurb.tex -------------------------------------------------------------------------------- /src/cover/bunnies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/cover/bunnies.png -------------------------------------------------------------------------------- /src/cover/cover-hardcover-ocaml.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/cover/cover-hardcover-ocaml.tex -------------------------------------------------------------------------------- /src/cover/cover-hardcover-reason.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/cover/cover-hardcover-reason.tex -------------------------------------------------------------------------------- /src/cover/cover-hardcover-scala.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/cover/cover-hardcover-scala.tex -------------------------------------------------------------------------------- /src/cover/cover-hardcover.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/cover/cover-hardcover.tex -------------------------------------------------------------------------------- /src/cover/cover-paperback-ocaml.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/cover/cover-paperback-ocaml.tex -------------------------------------------------------------------------------- /src/cover/cover-paperback-reason.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/cover/cover-paperback-reason.tex -------------------------------------------------------------------------------- /src/cover/cover-paperback-scala.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/cover/cover-paperback-scala.tex -------------------------------------------------------------------------------- /src/cover/cover-paperback.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/cover/cover-paperback.tex -------------------------------------------------------------------------------- /src/cover/piggie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/cover/piggie.png -------------------------------------------------------------------------------- /src/cover/ribbon-ocaml.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/cover/ribbon-ocaml.tex -------------------------------------------------------------------------------- /src/cover/ribbon-reason.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/cover/ribbon-reason.tex -------------------------------------------------------------------------------- /src/cover/ribbon-scala.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/cover/ribbon-scala.tex -------------------------------------------------------------------------------- /src/ctfp-print-ocaml.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/ctfp-print-ocaml.tex -------------------------------------------------------------------------------- /src/ctfp-print-reason.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/ctfp-print-reason.tex -------------------------------------------------------------------------------- /src/ctfp-print-scala.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/ctfp-print-scala.tex -------------------------------------------------------------------------------- /src/ctfp-print-zh-cn.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/ctfp-print-zh-cn.tex -------------------------------------------------------------------------------- /src/ctfp-print.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/ctfp-print.tex -------------------------------------------------------------------------------- /src/ctfp-reader-ocaml.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/ctfp-reader-ocaml.tex -------------------------------------------------------------------------------- /src/ctfp-reader-reason.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/ctfp-reader-reason.tex -------------------------------------------------------------------------------- /src/ctfp-reader-scala.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/ctfp-reader-scala.tex -------------------------------------------------------------------------------- /src/ctfp-reader-zh-cn.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/ctfp-reader-zh-cn.tex -------------------------------------------------------------------------------- /src/ctfp-reader.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/ctfp-reader.tex -------------------------------------------------------------------------------- /src/ctfp-zh-cn.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/ctfp-zh-cn.tex -------------------------------------------------------------------------------- /src/ctfp.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/ctfp.tex -------------------------------------------------------------------------------- /src/fig/icons/by.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/fig/icons/by.pdf -------------------------------------------------------------------------------- /src/fig/icons/cc.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/fig/icons/cc.pdf -------------------------------------------------------------------------------- /src/fig/icons/haskell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/fig/icons/haskell.png -------------------------------------------------------------------------------- /src/fig/icons/ocaml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/fig/icons/ocaml.png -------------------------------------------------------------------------------- /src/fig/icons/reason.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/fig/icons/reason.png -------------------------------------------------------------------------------- /src/fig/icons/sa.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/fig/icons/sa.pdf -------------------------------------------------------------------------------- /src/fig/icons/scala.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/fig/icons/scala.png -------------------------------------------------------------------------------- /src/free-software.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/free-software.tex -------------------------------------------------------------------------------- /src/half-title.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/half-title.tex -------------------------------------------------------------------------------- /src/index.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/index.tex -------------------------------------------------------------------------------- /src/opt-ocaml.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/opt-ocaml.tex -------------------------------------------------------------------------------- /src/opt-print-ustrade.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/opt-print-ustrade.tex -------------------------------------------------------------------------------- /src/opt-reader-10in.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/opt-reader-10in.tex -------------------------------------------------------------------------------- /src/opt-reason.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/opt-reason.tex -------------------------------------------------------------------------------- /src/opt-scala.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/opt-scala.tex -------------------------------------------------------------------------------- /src/postamble.tex: -------------------------------------------------------------------------------- 1 | 2 | \end{document} 3 | -------------------------------------------------------------------------------- /src/preamble-zh-cn.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/preamble-zh-cn.tex -------------------------------------------------------------------------------- /src/preamble.tex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/preamble.tex -------------------------------------------------------------------------------- /src/scraper.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wang-Ji20/milewski-ctfp-pdf-zh-cn-translation/HEAD/src/scraper.py -------------------------------------------------------------------------------- /src/version.tex: -------------------------------------------------------------------------------- 1 | \newcommand\OPTversion{dev} --------------------------------------------------------------------------------