Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Review of the text by Kakadu #2

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open

Conversation

Kakadu
Copy link

@Kakadu Kakadu commented Aug 3, 2021

It looks later chapters of tutorial are better then the starting ones.

@YueLiPicasso
Copy link
Owner

YueLiPicasso commented Aug 3, 2021

The pull request touches upon several sorts of problems. Based on how easy they are to be resolved, I would classify them
into some groups, listed below.

Group S: Problems that have straightforward fix or cause disputes on trivial matters (S for straight)

  • spell errors
  • text formatting (such as adding newlines and indentation)
  • removal of double semi-colons ( ;; ) at end of OCaml code lines
  • Alternative commands for the install/uninstall of OCanren.
  • Write in infix or prefix style, for infix operators ?
  • change of jargon: groundi -> injected
  • two versions of build system
  • favor of explict lambda abstraction in function definition

Group M: Moderate technical clarifications (M for moderate)

  • How to briefly introduce GT? Shall we say that "it provides a Haskell type class style feature to OCaml" or we could say something better?
  • Clarify that we do not allow infinite programs, but the programs we write may be viewed as being infinite in theory.
  • Description of simple concepts like "stream" in complex/advanced ways could be kept, but a more intuitive explanation can also be added.
  • The term "zip" has many meanings, but that adopted in the tutorial is clarified by an example. A deterministic and implementation oriented definition of zipping is good to be added.
  • GT.string vs. string to be clarified
  • The notion of guarded type may be not useful for some people, but I found it illuminating, so I choose to keep it.
  • When does a ground type coincide with its corresponding (fully) abstract type? This may worth some more discussion.
  • The comments on the use of -rectypes compiler option serve to explain why we need that flag.
  • Explain the two type parameters of the "injected" type constructor could be added.
  • Clarify that there are a few syntaxes for OCanren and we are using one of them.

Group P: Philosophical questions

  • Shall the author focus the tutorial on the major implementation technique of OCanren and the ideas
    of relational programming, which he is better at, or he should do what he is not good at and update the tutorial very often to explain how to install the latest version of OCanren where there is no fundamental change in its concepts and implementation?

Kakadu added a commit to PLTools/OCanren that referenced this pull request Aug 10, 2021
An initial version only. Requires further polishing. See
YueLiPicasso/OCanrenTutorial#2 for details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants