jimb-org.texi 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. @menu
  2. Preliminary
  3. * Introduction::
  4. * Using Guile::
  5. @bye
  6. >You can actually put any English text to break up the menu, so you
  7. >could put the "Part n" headings in it.
  8. Introduction
  9. --- Explains Guile's goals, and gives brief examples of how to use
  10. Guile interactively (show off repl), as a script interpreter,
  11. and as an embedded interpreter.
  12. Part I: Guile Scheme
  13. R4RS Scheme as a Starting Point
  14. --- Here we refer to R4RS, and explain that we're only
  15. describing differences.
  16. Block comments and interpreter triggers
  17. Symbol case
  18. Keywords
  19. Exceptions
  20. Modules
  21. --- the preceeding three come first, because we need them
  22. in order to explain the behavior of some things later
  23. Exception Handling
  24. --- mention that repls usually establish default exception handlers
  25. Dynamic Wind
  26. Records
  27. Structures
  28. Arrays
  29. Binary Numeric Operations
  30. Shared and Read-Only Strings
  31. Object Properties
  32. Association Lists and Hash Tables
  33. (Dictionaries In General)
  34. association lists
  35. hash tables (Hash Values)
  36. Input/Output ports
  37. file ports
  38. soft ports
  39. string ports
  40. extended I/O (fseek; line read/write)
  41. Garbage Collection
  42. Threads and Dynamic Roots
  43. Reflection
  44. eval
  45. Tag Values
  46. Weak references
  47. Regular Expressions
  48. SLIB
  49. POSIX system calls and networking
  50. --- I think people will generally know whether they're looking
  51. for a system call or not, so this should be an okay category.
  52. conventions (includes error handling)
  53. ports vs. file descriptors
  54. file system (mknod goes here, no?)
  55. user database
  56. time (includes gettimeofday or whatever, strftime, strptime)
  57. processes
  58. terminals and pseudo-terminals
  59. pipes
  60. networking (includes databases, address conversion, and sockets)
  61. system identification (uname)
  62. locales (setlocale)
  63. --- Note that there is no more 'misc'. It's better to have
  64. small sections than unhelpful names.
  65. SCSH
  66. --- includes info on how to get SCSH features (open this
  67. module), but mostly just a pointer to the SCSH manual.
  68. This should not be under POSIX. SCSH includes plenty of
  69. high-level stuff for starting processes and string
  70. processing. SCSH is not a subset of POSIX, nor the
  71. reverse.
  72. Tcl/Tk interface
  73. Module internals
  74. first-class variables
  75. first-class modules
  76. internal debugging interface
  77. --- The name of this chapter needs to clearly distinguish it
  78. from the appendix describing the debugger UI. The intro
  79. should have a pointer to the UI appendix.
  80. Part II: Using Scheme with C --- a Portable Interface
  81. --- We cover gh in a completely separate section. Why? I admit
  82. I'm on shaky ground, but here's my reasoning: People who want
  83. to write portable C code need to restrict themselves to only
  84. using GH, and GH's semantics are (necessarily) well-defined
  85. without reference to Guile's particulars. This makes life
  86. more difficult for folks who just prefer to use the GH
  87. interface when they can, but I really think the SCM interface
  88. is not so bad, once you're used to it. A *lot* of GH
  89. functions are just wrappers for SCM functions.
  90. --- We cover repls here too, since GH has repl functions.
  91. Part III: Using Scheme with C --- Guile's Interface
  92. Scheme data representation
  93. Relationship between Scheme and C functions
  94. --- this is where we explain that all the functions marked as
  95. "Primitive Functions" are also accessible from C, and how
  96. to derive the C interface given the Scheme interface, when
  97. we don't spell it out.
  98. ... I think there's other stuff needed here ...
  99. I/O internals
  100. linking Guile with your code
  101. --- Mark's "Tools to automate adding libraries" is not a
  102. well-defined concept. I think this is closer to what we
  103. want to cover for now.
  104. snarfing
  105. Appendices:
  106. Obtaining and Installing Guile
  107. Invoking Guile
  108. --- mentions read-eval-print loops
  109. --- both the SCSH and GAWK manuals relegate invocation details
  110. to an appendix. We can give examples in the introduction.
  111. debugger user interface
  112. --- The title and introduction of this appendix need to
  113. distinguish this clearly from the chapter on the internal
  114. debugging interface.
  115. Indices:
  116. --- At the top of the function/variable index, remind people
  117. to look for functions under their Scheme names as well as
  118. their C names.