readme.texi 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494
  1. \input texinfo @c -*- texinfo -*-
  2. @c %**start of header
  3. @setfilename readme.info
  4. @settitle
  5. @documentencoding UTF-8
  6. @documentlanguage en
  7. @c %**end of header
  8. @finalout
  9. @titlepage
  10. @title
  11. @author Yang Xiaolong
  12. @end titlepage
  13. @contents
  14. @ifnottex
  15. @node Top
  16. @top
  17. @end ifnottex
  18. @menu
  19. * Introduction::
  20. * Manuals::
  21. * Tutorials::
  22. * Libraries::
  23. * Programming paradigm::
  24. * Tools::
  25. * Blogs::
  26. * Other: Other (3).
  27. * Other lists of Guile software::
  28. * Videos / Talks / Presentations::
  29. @detailmenu
  30. --- The Detailed Node Listing ---
  31. Libraries
  32. * Async::
  33. * Browser::
  34. * Chat clients::
  35. * Compression::
  36. * Configuration::
  37. * Databases::
  38. * Data structures::
  39. * E-Mail::
  40. * Event loop::
  41. * FFI - Foreign Function Interface::
  42. * File formats::
  43. * File system::
  44. * Game development::
  45. * Games::
  46. * Graphics::
  47. * GUI development::
  48. * Language::
  49. * Logging::
  50. * Machine Learning::
  51. * Message Queues::
  52. * Network programming::
  53. * Parsing::
  54. * Plotting::
  55. * Protocols::
  56. * Regular expressions::
  57. * REPL::
  58. * RPC::
  59. * Scientific computing and mathematics::
  60. * TUI development::
  61. * Unit Testing::
  62. * Version control systems::
  63. * Web Development::
  64. * Window manager::
  65. * Working with code::
  66. * Other::
  67. Chat clients
  68. * IRC::
  69. Data structures
  70. * Purely functional data structures (PDFS)::
  71. * RDF::
  72. * Lenses::
  73. * Other: Other (1).
  74. File formats
  75. * JSON::
  76. * CSV::
  77. * XML::
  78. * Markdown::
  79. * Texinfo::
  80. * JPEG::
  81. * ICS::
  82. * torrent::
  83. * Other: Other (2).
  84. Graphics
  85. * Image processing::
  86. Parsing
  87. * Parser Combinators::
  88. * Parser Generator::
  89. Scientific computing and mathematics
  90. * Interaction with the Jupyter ecosystem::
  91. Web Development
  92. * Web frameworks::
  93. * Tooling / Additional libraries::
  94. * Static website generators::
  95. * Template engine::
  96. * Interaction with services::
  97. * Web application examples::
  98. Programming paradigm
  99. * "Object-oriented programming"::
  100. * Relational programming::
  101. * Functional programming::
  102. "Object-oriented programming"
  103. * Prototype based::
  104. Tools
  105. * Project management::
  106. Project management
  107. * Package managers::
  108. @end detailmenu
  109. @end menu
  110. @node Introduction
  111. @chapter Introduction
  112. In software development circles there is a culture of creating so called "awesome lists". Those lists contain links to all kinds of resources for a topic, which can be as broadly defined as "computer science", "software development", "software engineering" or as specific as a single programming language or an area of application of programming languages such as "web development", "machine learning". Probably such lists exist for many other things than programming as well. Their character is mostly informal, which makes them easily extendable. Here is what not to expect from such a list:
  113. @itemize
  114. @item
  115. comprehensiveness or completeness
  116. @item
  117. being finished
  118. @item
  119. always containing the most up to date links to relevant projects
  120. @item
  121. containing the links to the best options for all purpose or goal
  122. @end itemize
  123. While those things might be desirable, the list is a community effort. It is up to the author and community to share their knowledge. No one knows everything there is to know and new projects are initiated frequently.
  124. The following list is such an "awesome list" for the programming language GNU Guile. Its purpose is to make it easy for people to find tutorials, resources or any kind of knowledge about GNU Guile.
  125. Anyone, who knows something, that should be added to the list, is welcome to suggest edits or make pull requests.
  126. @node Manuals
  127. @chapter Manuals
  128. @itemize
  129. @item
  130. There is a huge reference manual for GNU Guile on the GNU website: @uref{https://www.gnu.org/software/guile/manual/}.
  131. @end itemize
  132. @node Tutorials
  133. @chapter Tutorials
  134. @itemize
  135. @item
  136. "Learn Scheme in 15 minutes": @uref{https://web-artanis.com/scheme.html}
  137. @item
  138. guile-tutorial: @uref{https://notabug.org/cwebber/guile-tutorial}
  139. @end itemize
  140. @node Libraries
  141. @chapter Libraries
  142. @itemize
  143. @item
  144. GUIX package search
  145. @itemize
  146. @item
  147. website: @uref{https://hpc.guix.info/browse}
  148. @item
  149. Search for example for @code{^guile-} to find many Guile libraries and projects.
  150. @end itemize
  151. @end itemize
  152. @menu
  153. * Async::
  154. * Browser::
  155. * Chat clients::
  156. * Compression::
  157. * Configuration::
  158. * Databases::
  159. * Data structures::
  160. * E-Mail::
  161. * Event loop::
  162. * FFI - Foreign Function Interface::
  163. * File formats::
  164. * File system::
  165. * Game development::
  166. * Games::
  167. * Graphics::
  168. * GUI development::
  169. * Language::
  170. * Logging::
  171. * Machine Learning::
  172. * Message Queues::
  173. * Network programming::
  174. * Parsing::
  175. * Plotting::
  176. * Protocols::
  177. * Regular expressions::
  178. * REPL::
  179. * RPC::
  180. * Scientific computing and mathematics::
  181. * TUI development::
  182. * Unit Testing::
  183. * Version control systems::
  184. * Web Development::
  185. * Window manager::
  186. * Working with code::
  187. * Other::
  188. @end menu
  189. @node Async
  190. @section Async
  191. @itemize
  192. @item
  193. 8sync
  194. @itemize
  195. @item
  196. git repository at Savannah: @uref{https://savannah.gnu.org/projects/8sync}
  197. @item
  198. manual / GNU software manual: @uref{https://www.gnu.org/software/8sync/manual/html_node/index.html#Top}
  199. @item
  200. website / GNU software page: @uref{https://www.gnu.org/software/8sync/}
  201. @item
  202. tutorial: @uref{https://www.gnu.org/software/8sync/manual/html_node/Tutorial.html#Tutorial}
  203. @end itemize
  204. @end itemize
  205. @node Browser
  206. @section Browser
  207. @itemize
  208. @item
  209. Nomad
  210. @itemize
  211. @item
  212. git repository at non-GNU Savannah: @uref{https://savannah.nongnu.org/projects/nomad/}
  213. @item
  214. website: @uref{https://www.nongnu.org/nomad/}
  215. @end itemize
  216. @end itemize
  217. @node Chat clients
  218. @section Chat clients
  219. @menu
  220. * IRC::
  221. @end menu
  222. @node IRC
  223. @subsection IRC
  224. @itemize
  225. @item
  226. @code{guile-irc}
  227. @itemize
  228. @item
  229. git repository at GitHub: @uref{https://github.com/fbs/guile-irc}
  230. @end itemize
  231. @end itemize
  232. @node Compression
  233. @section Compression
  234. @itemize
  235. @item
  236. @code{guile-zlib}
  237. @itemize
  238. @item
  239. git repository at GitHub: @uref{https://github.com/davexunit/guile-zlib}
  240. @end itemize
  241. @end itemize
  242. @node Configuration
  243. @section Configuration
  244. @itemize
  245. @item
  246. @code{guile-config}
  247. @itemize
  248. @item
  249. git repository at GitLab: @uref{https://gitlab.com/a-sassmannshausen/guile-config}
  250. @end itemize
  251. @end itemize
  252. @node Databases
  253. @section Databases
  254. @itemize
  255. @item
  256. Generic
  257. @itemize
  258. @item
  259. @code{guile-dbi}
  260. @itemize
  261. @item
  262. git repository at GitHub: @uref{https://github.com/opencog/guile-dbi}
  263. @item
  264. documentation: @uref{https://htmlpreview.github.io/?https://github.com/opencog/guile-dbi/blob/master/website/guile-dbi.html}
  265. @item
  266. offers MySQL, Postgresql and SQLite3 interfaces
  267. @end itemize
  268. @end itemize
  269. @item
  270. @code{guile-redis}
  271. @itemize
  272. @item
  273. git repository at GitHub: @uref{https://github.com/aconchillo/guile-redis}
  274. @end itemize
  275. @item
  276. @code{guile-sqlite3}
  277. @itemize
  278. @item
  279. git repository at notabug.org: @uref{https://notabug.org/guile-sqlite3/guile-sqlite3.git}
  280. @item
  281. documentation at: ???
  282. @end itemize
  283. @item
  284. Postgres
  285. @itemize
  286. @item
  287. @code{guile-squee}
  288. @itemize
  289. @item
  290. git repository at notabug.org: @uref{https://notabug.org/cwebber/guile-squee}
  291. @item
  292. documentation at: ???
  293. @end itemize
  294. @end itemize
  295. @item
  296. WiredTiger (@uref{http://www.wiredtiger.com/}
  297. @itemize
  298. @item
  299. @code{guile-wiredtiger}
  300. @itemize
  301. @item
  302. blog post: @uref{https://hyper.dev/blog/getting-started-with-guile-wiredtiger.html}
  303. @item
  304. git repository at: ??? (framagit requires login?)
  305. @end itemize
  306. @end itemize
  307. @item
  308. @code{guile-sparql}: @uref{https://github.com/roelj/guile-sparql}
  309. @item
  310. @code{sparqling-genomics}: @uref{https://github.com/UMCUGenetics/sparqling-genomics}
  311. @end itemize
  312. @node Data structures
  313. @section Data structures
  314. @menu
  315. * Purely functional data structures (PDFS)::
  316. * RDF::
  317. * Lenses::
  318. * Other: Other (1).
  319. @end menu
  320. @node Purely functional data structures (PDFS)
  321. @subsection Purely functional data structures (PDFS)
  322. @itemize
  323. @item
  324. @code{pdfs}
  325. @itemize
  326. @item
  327. git repository at GitHub: @uref{https://github.com/ijp/pfds}
  328. @item
  329. documentation: ???
  330. @end itemize
  331. @item
  332. @code{fectors}
  333. @itemize
  334. @item
  335. git repository at GitHub: @uref{https://github.com/ijp/fectors}
  336. @end itemize
  337. @end itemize
  338. @node RDF
  339. @subsection RDF
  340. @itemize
  341. @item
  342. @code{guile-rdf}
  343. @itemize
  344. @item
  345. git repository at framagit: @uref{https://framagit.org/tyreunom/guile-rdf}
  346. @end itemize
  347. @end itemize
  348. @node Lenses
  349. @subsection Lenses
  350. @itemize
  351. @item
  352. @code{guile-lens}
  353. @itemize
  354. @item
  355. git repository at GitLab: @uref{https://gitlab.com/a-sassmannshausen/guile-lens}
  356. @end itemize
  357. @end itemize
  358. @node Other (1)
  359. @subsection Other
  360. @itemize
  361. @item
  362. @code{copernic}
  363. @itemize
  364. @item
  365. git repository at GitHub: @uref{https://github.com/amirouche/copernic}
  366. @end itemize
  367. @end itemize
  368. @node E-Mail
  369. @section E-Mail
  370. @itemize
  371. @item
  372. GNU Mailutils ??? (@uref{https://mailutils.org/})
  373. @item
  374. @code{guile-email}: @uref{https://guile-email.systemreboot.net/}
  375. @end itemize
  376. @node Event loop
  377. @section Event loop
  378. @itemize
  379. @item
  380. @code{guile-a-sync}
  381. @itemize
  382. @item
  383. git repository at GitHub: @uref{https://github.com/ChrisVine/guile-a-sync}
  384. @item
  385. documentation: ?
  386. @end itemize
  387. @end itemize
  388. @node FFI - Foreign Function Interface
  389. @section FFI - Foreign Function Interface
  390. @itemize
  391. @item
  392. @code{ffi-helper} from NYACC
  393. @itemize
  394. @item
  395. documentation: @uref{https://www.nongnu.org/nyacc/ffi-help.html}
  396. @end itemize
  397. @end itemize
  398. @node File formats
  399. @section File formats
  400. @menu
  401. * JSON::
  402. * CSV::
  403. * XML::
  404. * Markdown::
  405. * Texinfo::
  406. * JPEG::
  407. * ICS::
  408. * torrent::
  409. * Other: Other (2).
  410. @end menu
  411. @node JSON
  412. @subsection JSON
  413. @itemize
  414. @item
  415. JSON
  416. @itemize
  417. @item
  418. @code{guile-json}
  419. @itemize
  420. @item
  421. on GitHub: @uref{https://github.com/aconchillo/guile-json}
  422. @item
  423. on savannah: @uref{http://savannah.nongnu.org/projects/guile-json/}
  424. @end itemize
  425. @end itemize
  426. @end itemize
  427. @node CSV
  428. @subsection CSV
  429. @itemize
  430. @item
  431. @code{guile-csv}
  432. @itemize
  433. @item
  434. git repository at GitLab: @uref{https://gitlab.com/NalaGinrut/guile-csv}
  435. @end itemize
  436. @item
  437. @code{guile-dsv}
  438. @itemize
  439. @item
  440. This is more general, but can work with CSV as well.
  441. @item
  442. git repository at GitHub: @uref{https://github.com/artyom-poptsov/guile-dsv}
  443. @end itemize
  444. @end itemize
  445. @node XML
  446. @subsection XML
  447. @itemize
  448. @item
  449. Guile's standard library SXML implementation
  450. @itemize
  451. @item
  452. GNU software manual: @uref{https://www.gnu.org/software/guile/manual/html_node/SXML.html}
  453. @item
  454. Basically your templates become functions or macros.
  455. @item
  456. The structure of your document is kept as Scheme data structures.
  457. @itemize
  458. @item
  459. This avoids having parse the document as a long string into an internal data structure to perform semantic transformations.
  460. @item
  461. It enables pattern matching without resorting to things like regular expressions and similar shenanigans.
  462. @end itemize
  463. @end itemize
  464. @end itemize
  465. @node Markdown
  466. @subsection Markdown
  467. @itemize
  468. @item
  469. @code{guile-commonmark}
  470. @itemize
  471. @item
  472. git repository at GitHub: @uref{https://github.com/OrangeShark/guile-commonmark}
  473. @item
  474. documentation: ???
  475. @end itemize
  476. @end itemize
  477. @node Texinfo
  478. @subsection Texinfo
  479. @itemize
  480. @item
  481. Guile standard library texinfo functionality
  482. @itemize
  483. @item
  484. GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/texinfo.html}
  485. @end itemize
  486. @end itemize
  487. @node JPEG
  488. @subsection JPEG
  489. @itemize
  490. @item
  491. @code{guile-jpeg}: a library for parsing JPEG files
  492. @itemize
  493. @item
  494. git repository at GitHub: @uref{https://github.com/guildhall/guile-jpeg}
  495. @end itemize
  496. @end itemize
  497. @strong{*}
  498. @node ICS
  499. @subsection ICS
  500. @itemize
  501. @item
  502. @code{guile-ics}
  503. @itemize
  504. @item
  505. git repository at GitHub: @uref{https://github.com/artyom-poptsov/guile-ics}
  506. @end itemize
  507. @end itemize
  508. @node torrent
  509. @subsection torrent
  510. @itemize
  511. @item
  512. @code{torrent}
  513. @itemize
  514. @item
  515. git repository at GitHub: @uref{https://github.com/o-nly/torrent}
  516. @item
  517. documentation at: ???
  518. @end itemize
  519. @end itemize
  520. @node Other (2)
  521. @subsection Other
  522. @itemize
  523. @item
  524. If the input is not input from users and is trustworthy, one might be able to leverage read/write of s-expressions instead of using other formats.
  525. @end itemize
  526. @node File system
  527. @section File system
  528. @itemize
  529. @item
  530. @code{sdupes}, duplicate file detection
  531. @itemize
  532. @item
  533. git repository at GitHub: @uref{https://github.com/sph-mn/sdupes}
  534. @end itemize
  535. @end itemize
  536. @node Game development
  537. @section Game development
  538. @itemize
  539. @item
  540. Chickadee
  541. @itemize
  542. @item
  543. describes itself as "game development toolkit"
  544. @item
  545. OpenGL based
  546. @item
  547. website: @uref{https://dthompson.us/projects/chickadee.html}
  548. @item
  549. manual: @uref{https://dthompson.us/manuals/chickadee/index.html}
  550. @end itemize
  551. @end itemize
  552. @node Games
  553. @section Games
  554. @itemize
  555. @item
  556. StayAlive
  557. @itemize
  558. @item
  559. git repo: @uref{https://github.com/mwitmer/StayAlive}
  560. @end itemize
  561. @end itemize
  562. @node Graphics
  563. @section Graphics
  564. @itemize
  565. @item
  566. @code{guile-sdl}
  567. @itemize
  568. @item
  569. GNU software page: @uref{https://www.gnu.org/software/guile-sdl/}
  570. @item
  571. gnuvola page of examples: @uref{http://www.gnuvola.org/software/guile-sdl-demos/}
  572. @item
  573. gnuvola software page: @uref{http://www.gnuvola.org/software/guile-sdl-demos/}
  574. @end itemize
  575. @item
  576. @code{guile-sdl2}
  577. @itemize
  578. @item
  579. project website: @uref{https://dthompson.us/projects/guile-sdl2.html}
  580. @end itemize
  581. @item
  582. @code{guile-opengl}
  583. @itemize
  584. @item
  585. GNU software page: @uref{https://www.gnu.org/software/guile-opengl/}
  586. @item
  587. GNU software manual page: @uref{https://www.gnu.org/software/guile-opengl/manual/guile-opengl.html}
  588. @item
  589. git repository at Savannah: @uref{http://savannah.gnu.org/projects/guile-opengl}
  590. @end itemize
  591. @item
  592. @code{guile-cairo}
  593. @itemize
  594. @item
  595. git repository at Savannah: @uref{http://savannah.nongnu.org/projects/guile-cairo}
  596. @end itemize
  597. @item
  598. @code{guile-jpeg}: a library for parsing JPEG files
  599. @itemize
  600. @item
  601. git repository at GitHub: @uref{https://github.com/guildhall/guile-jpeg}
  602. @end itemize
  603. @end itemize
  604. @menu
  605. * Image processing::
  606. @end menu
  607. @node Image processing
  608. @subsection Image processing
  609. @itemize
  610. @item
  611. @code{guile-cv}
  612. @itemize
  613. @item
  614. GNU software page: @uref{https://www.gnu.org/software/guile-cv/}
  615. @item
  616. git repository at Savannah: @uref{http://git.savannah.gnu.org/cgit/guile-cv.git}
  617. @end itemize
  618. @end itemize
  619. @node GUI development
  620. @section GUI development
  621. @itemize
  622. @item
  623. @code{guile-gi}
  624. @itemize
  625. @item
  626. git repository at GitHub: @uref{https://github.com/spk121/guile-gi}
  627. @item
  628. documentation at: @uref{https://spk121.github.io/guile-gi/}
  629. @end itemize
  630. @item
  631. @code{guile-gnome}
  632. @itemize
  633. @item
  634. GNU software page: @uref{https://www.gnu.org/software/guile-gnome/}
  635. @item
  636. git repository at Savannah: @uref{http://git.savannah.gnu.org/cgit/guile-gnome.git}
  637. @end itemize
  638. @item
  639. @code{guile-gtk}
  640. @itemize
  641. @item
  642. website: @uref{https://www.gnu.org/software/guile-gtk/}
  643. @item
  644. CVS repository at non-GNU Savannah: @uref{http://savannah.nongnu.org/projects/guile-gtk/}
  645. @end itemize
  646. @item
  647. @code{g-golf}: @uref{https://www.gnu.org/software/g-golf/}
  648. @end itemize
  649. @node Language
  650. @section Language
  651. @itemize
  652. @item
  653. @code{guile-aspell}
  654. @itemize
  655. @item
  656. git repository at GitHub: @uref{https://github.com/spk121/guile-aspell}
  657. @item
  658. website: @uref{http://lonelycactus.com/guile-aspell.html}
  659. @end itemize
  660. @end itemize
  661. @node Logging
  662. @section Logging
  663. @itemize
  664. @item
  665. @code{guile-logging}
  666. @itemize
  667. @item
  668. git repository at GitHub: @uref{https://github.com/shanecelis/guile-logging}
  669. @end itemize
  670. @end itemize
  671. TODO: check e-mails from the guile user list for more info
  672. @node Machine Learning
  673. @section Machine Learning
  674. @itemize
  675. @item
  676. decision tree
  677. @itemize
  678. @item
  679. @code{guile-ml}
  680. @itemize
  681. @item
  682. repository at notabug.org: @uref{https://notabug.org/ZelphirKaltstahl/guile-ml}
  683. @end itemize
  684. @end itemize
  685. @end itemize
  686. @node Message Queues
  687. @section Message Queues
  688. @itemize
  689. @item
  690. Zero MQ
  691. @itemize
  692. @item
  693. @code{guile-zmq}
  694. @itemize
  695. @item
  696. git repository at GitLab: @uref{https://gitlab.com/NalaGinrut/guile-zmq}
  697. @end itemize
  698. @item
  699. @code{guile-simple-zmq}
  700. @itemize
  701. @item
  702. git repository at GitHub: @uref{https://github.com/jerry40/guile-simple-zmq}
  703. @end itemize
  704. @end itemize
  705. @end itemize
  706. @node Network programming
  707. @section Network programming
  708. @itemize
  709. @item
  710. Guile's standard library networking module
  711. @itemize
  712. @item
  713. GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/Networking.html}
  714. @end itemize
  715. @item
  716. @code{guile-curl}
  717. @itemize
  718. @item
  719. git repository at GitHub: @uref{https://github.com/spk121/guile-curl}
  720. @end itemize
  721. @item
  722. @code{guile-ssh}
  723. @itemize
  724. @item
  725. git repository at GitHub: @uref{https://github.com/artyom-poptsov/guile-ssh}
  726. @end itemize
  727. @item
  728. GNU Serveez
  729. @itemize
  730. @item
  731. GNU software page: @uref{https://www.gnu.org/software/serveez/}
  732. @item
  733. manual: @uref{https://www.gnu.org/software/serveez/manual/}
  734. @item
  735. git repository at Savannah: @uref{http://savannah.gnu.org/projects/serveez/}
  736. @end itemize
  737. @item
  738. @code{serveez-mg}
  739. @itemize
  740. @item
  741. git repository at GitHub @uref{https://github.com/spk121/serveez-mg}
  742. @item
  743. based on GNU Serveez
  744. @end itemize
  745. @end itemize
  746. @node Parsing
  747. @section Parsing
  748. @menu
  749. * Parser Combinators::
  750. * Parser Generator::
  751. @end menu
  752. @node Parser Combinators
  753. @subsection Parser Combinators
  754. @itemize
  755. @item
  756. @code{stis-parser}
  757. @itemize
  758. @item
  759. git repository at GitLab: @uref{https://gitlab.com/tampe/stis-parser}
  760. @end itemize
  761. @end itemize
  762. @node Parser Generator
  763. @subsection Parser Generator
  764. @itemize
  765. @item
  766. @code{nyacc}: Not Yet Another Compiler Compiler
  767. @itemize
  768. @item
  769. git repository at Savannah: @uref{https://savannah.nongnu.org/projects/nyacc}
  770. @item
  771. documentation: @uref{https://www.nongnu.org/nyacc/nyacc-ug.html}
  772. @end itemize
  773. @end itemize
  774. @node Plotting
  775. @section Plotting
  776. @itemize
  777. @item
  778. @code{guile-plotutils}
  779. @itemize
  780. @item
  781. git repository at GitHub: @uref{https://github.com/spk121/guile-plotutils}
  782. @item
  783. website: @uref{https://www.gnu.org/software/plotutils/plotutils.html}
  784. @end itemize
  785. @end itemize
  786. @node Protocols
  787. @section Protocols
  788. @itemize
  789. @item
  790. X protocol
  791. @itemize
  792. @item
  793. @code{guile-xcb}
  794. @itemize
  795. @item
  796. git repo: @uref{https://github.com/mwitmer/guile-xcb}
  797. @end itemize
  798. @end itemize
  799. @end itemize
  800. @node Regular expressions
  801. @section Regular expressions
  802. @itemize
  803. @item
  804. IrRegular Expressions (Scheme, R[4567]RS)
  805. @itemize
  806. @item
  807. website: @uref{http://synthcode.com/scheme/irregex}
  808. @end itemize
  809. @end itemize
  810. @node REPL
  811. @section REPL
  812. @itemize
  813. @item
  814. @code{guile-colorized}
  815. @itemize
  816. @item
  817. git repository at GitLab: @uref{https://gitlab.com/NalaGinrut/guile-colorized}
  818. @end itemize
  819. @end itemize
  820. @node RPC
  821. @section RPC
  822. @itemize
  823. @item
  824. @code{guile-xmlrpc}: @uref{https://github.com/aconchillo/guile-xmlrpc}
  825. @end itemize
  826. @node Scientific computing and mathematics
  827. @section Scientific computing and mathematics
  828. @itemize
  829. @item
  830. GNU Scientific Library (GSL)
  831. @itemize
  832. @item
  833. GNU software page @uref{https://www.gnu.org/software/gsl/}
  834. @item
  835. git repository at Savannah: @uref{http://savannah.gnu.org/projects/gsl/}
  836. @item
  837. wikipedia page: @uref{https://en.wikipedia.org/wiki/GNU_Scientific_Library}
  838. @item
  839. Guile bindings: @uref{http://community.schemewiki.org/?gee-guile-gsl}
  840. @end itemize
  841. @item
  842. Matrix multiplication
  843. @itemize
  844. @item
  845. @code{guile-ffi-cblas}
  846. @itemize
  847. @item
  848. git repository at GitHub: @uref{https://github.com/lloda/guile-ffi-cblas}
  849. @end itemize
  850. @end itemize
  851. @item
  852. Symbolic mathematics
  853. @itemize
  854. @item
  855. @code{guile-scmutils}
  856. @itemize
  857. @item
  858. website: @uref{https://www.cs.rochester.edu/~gildea/guile-scmutils/}
  859. @end itemize
  860. @end itemize
  861. @item
  862. Guile implementation of symbolic mathematics shown in SICP
  863. @itemize
  864. @item
  865. Does this exist?
  866. @end itemize
  867. @end itemize
  868. @menu
  869. * Interaction with the Jupyter ecosystem::
  870. @end menu
  871. @node Interaction with the Jupyter ecosystem
  872. @subsection Interaction with the Jupyter ecosystem
  873. @itemize
  874. @item
  875. @code{guix-kernel}
  876. @itemize
  877. @item
  878. git repository at gitlab.inria.fr: @uref{https://gitlab.inria.fr/guix-hpc/guix-kernel}
  879. @item
  880. blog post: @uref{https://hpc.guix.info/blog/2019/10/towards-reproducible-jupyter-notebooks/}
  881. @end itemize
  882. @item
  883. @code{guile-kernel}
  884. @itemize
  885. @item
  886. git repository at GitHub: @uref{https://github.com/jerry40/guile-kernel}
  887. @end itemize
  888. @end itemize
  889. @node TUI development
  890. @section TUI development
  891. @itemize
  892. @item
  893. @code{guile-ncurses}
  894. @itemize
  895. @item
  896. GNU software page: @uref{https://www.gnu.org/software/guile-ncurses/}
  897. @item
  898. git repository at GitHub: @uref{https://github.com/guildhall/guile-ncurses}
  899. @end itemize
  900. @end itemize
  901. @node Unit Testing
  902. @section Unit Testing
  903. @itemize
  904. @item
  905. SRFI-64 (@uref{https://srfi.schemers.org/srfi-64/srfi-64.html})
  906. @itemize
  907. @item
  908. GNU software Guile manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/SRFI_002d64.html}
  909. @end itemize
  910. @item
  911. @code{srfi-64-driver}
  912. @itemize
  913. @item
  914. git repository at: ???
  915. @item
  916. website: @uref{https://ngyro.com/software/srfi-64-driver.html}
  917. @end itemize
  918. @end itemize
  919. @node Version control systems
  920. @section Version control systems
  921. @itemize
  922. @item
  923. @code{guile-git}
  924. @itemize
  925. @item
  926. git repository at GitLab: @uref{https://gitlab.com/guile-git/guile-git}
  927. @end itemize
  928. @item
  929. @code{guile-semver}
  930. @itemize
  931. @item
  932. git repository at ngyro: @uref{https://git.ngyro.com/guile-semver}
  933. @item
  934. website at: @uref{https://ngyro.com/software/guile-semver.html}
  935. @end itemize
  936. @end itemize
  937. @node Web Development
  938. @section Web Development
  939. @menu
  940. * Web frameworks::
  941. * Tooling / Additional libraries::
  942. * Static website generators::
  943. * Template engine::
  944. * Interaction with services::
  945. * Web application examples::
  946. @end menu
  947. @node Web frameworks
  948. @subsection Web frameworks
  949. @itemize
  950. @item
  951. Guile's standard library's web module for dealing with web stuff:
  952. @itemize
  953. @item
  954. GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/Web.html}
  955. @end itemize
  956. @item
  957. Guile's standard library's web server:
  958. @itemize
  959. @item
  960. GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/Web-Server.html}
  961. @item
  962. blog post about the performance of Guile's web server: @uref{http://wingolog.org/archives/2012/03/08/an-in-depth-look-at-the-performance-of-guiles-web-server}
  963. @item
  964. documentation as generic interface for web server implementations: @uref{https://www.gnu.org/software/guile/manual/html_node/Web-Server.html}
  965. @item
  966. examples for usage for creating a web app: @uref{https://www.gnu.org/software/guile/manual/html_node/Web-Examples.html#Web-Examples}
  967. @end itemize
  968. @item
  969. GNU Artanis web application frameweork
  970. @itemize
  971. @item
  972. GNU software page: @uref{https://www.gnu.org/software/artanis/}
  973. @item
  974. git repository at GitLab: @uref{https://gitlab.com/NalaGinrut/artanis}
  975. @item
  976. official website of the GNU Artanis project: @uref{https://web-artanis.com/}
  977. @item
  978. blog post about GNU Artanis: @uref{https://dev.to/heroku/an-ode-to-gnu-artanis-2gn3}
  979. @item
  980. manual:
  981. @itemize
  982. @item
  983. @uref{https://www.gnu.org/software/artanis/manual/manual.html}
  984. @item
  985. @uref{https://www.gnu.org/software/artanis/manual/html_node/}
  986. @end itemize
  987. @item
  988. blog post about using GNU Artanis in a docker container: @uref{https://nalaginrut.com/archives/2019/09/18/install%20gnu%20artanis%20with%20docker}
  989. @end itemize
  990. @item
  991. SPH web app
  992. @itemize
  993. @item
  994. git repository at GitHub: @uref{https://github.com/sph-mn/sph-web-app}
  995. @end itemize
  996. @item
  997. tekuti
  998. @itemize
  999. @item
  1000. The git repository unfortunately seems to be dead, because it was hosted at gitorious, a now disfunct git host. Where can the code be found?
  1001. @item
  1002. blog post about tekuti: @uref{https://wingolog.org/projects/tekuti/}
  1003. @end itemize
  1004. @end itemize
  1005. @node Tooling / Additional libraries
  1006. @subsection Tooling / Additional libraries
  1007. @itemize
  1008. @item
  1009. JSON
  1010. @itemize
  1011. @item
  1012. @code{guile-json}
  1013. @itemize
  1014. @item
  1015. on GitHub: @uref{https://github.com/aconchillo/guile-json}
  1016. @item
  1017. on savannah: @uref{http://savannah.nongnu.org/projects/guile-json/}
  1018. @end itemize
  1019. @end itemize
  1020. @item
  1021. @code{guile-www}
  1022. @itemize
  1023. @item
  1024. git repository at savannah non-gnu: @uref{http://savannah.nongnu.org/projects/guile-www/}
  1025. @end itemize
  1026. @item
  1027. @code{guile-webutils}
  1028. @itemize
  1029. @item
  1030. git repository at notabug.org: @uref{https://notabug.org/cwebber/guile-webutils}
  1031. @end itemize
  1032. @end itemize
  1033. @enumerate
  1034. @item
  1035. Authorization and authentication
  1036. @itemize
  1037. @item
  1038. @code{guile-oauth}
  1039. @itemize
  1040. @item
  1041. git repository at GitHub: @uref{https://github.com/aconchillo/guile-oauth}
  1042. @end itemize
  1043. @item
  1044. @code{guile-jwt}
  1045. @itemize
  1046. @item
  1047. git repository on GitHub: @uref{https://github.com/aconchillo/guile-jwt}
  1048. @end itemize
  1049. @end itemize
  1050. @end enumerate
  1051. @node Static website generators
  1052. @subsection Static website generators
  1053. @itemize
  1054. @item
  1055. @code{guile-haunt}
  1056. @itemize
  1057. @item
  1058. git repository at GitHub: @uref{https://github.com/guildhall/guile-haunt}
  1059. @end itemize
  1060. @item
  1061. SPH static website generator
  1062. @itemize
  1063. @item
  1064. git repository at GitHub: @uref{https://github.com/sph-mn/sph-web-publish}
  1065. @end itemize
  1066. @end itemize
  1067. @node Template engine
  1068. @subsection Template engine
  1069. @itemize
  1070. @item
  1071. Guile's standard library SXML implementation
  1072. @itemize
  1073. @item
  1074. GNU software manual: @uref{https://www.gnu.org/software/guile/manual/html_node/SXML.html}
  1075. @item
  1076. Basically your templates become functions or macros.
  1077. @item
  1078. The structure of your document is kept as Scheme data structures.
  1079. @itemize
  1080. @item
  1081. This avoids having parse the document as a long string into an internal data structure to perform semantic transformations.
  1082. @item
  1083. It enables pattern matching without resorting to things like regular expressions and similar shenanigans.
  1084. @end itemize
  1085. @end itemize
  1086. @end itemize
  1087. @node Interaction with services
  1088. @subsection Interaction with services
  1089. @itemize
  1090. @item
  1091. @code{guile-mastodon}
  1092. @itemize
  1093. @item
  1094. git repository at framagit: @uref{https://framagit.org/prouby/guile-mastodon}
  1095. @item
  1096. documentation at: @uref{https://framagit.org/prouby/guile-mastodon/-/blob/master/doc/guile-mastodon.org}
  1097. @end itemize
  1098. @end itemize
  1099. @node Web application examples
  1100. @subsection Web application examples
  1101. @itemize
  1102. @item
  1103. @code{scheme-todomvc}:
  1104. @itemize
  1105. @item
  1106. git repo: @uref{https://github.com/amirouche/scheme-todomvc}
  1107. @item
  1108. demo: @uref{https://amirouche.github.io/scheme-todomvc/}
  1109. @end itemize
  1110. @end itemize
  1111. @node Window manager
  1112. @section Window manager
  1113. @itemize
  1114. @item
  1115. @code{guile-wm}
  1116. @itemize
  1117. @item
  1118. git repo: @uref{https://github.com/mwitmer/guile-wm}
  1119. @end itemize
  1120. @end itemize
  1121. @node Working with code
  1122. @section Working with code
  1123. @itemize
  1124. @item
  1125. @code{guile-syntax-highlight}
  1126. @itemize
  1127. @item
  1128. website: @uref{https://dthompson.us/projects/guile-syntax-highlight.html}
  1129. @item
  1130. repository: seems to be missing
  1131. @end itemize
  1132. @end itemize
  1133. @node Other
  1134. @section Other
  1135. @itemize
  1136. @item
  1137. @code{guile-lib}
  1138. @itemize
  1139. @item
  1140. git repository at non-GNU Savannah: @uref{http://git.savannah.nongnu.org/cgit/guile-lib.git}
  1141. @item
  1142. website at: @uref{https://www.nongnu.org/guile-lib/}
  1143. @end itemize
  1144. @item
  1145. SPH website:
  1146. @itemize
  1147. @item
  1148. It has some Guile library and project descriptions and links.
  1149. @item
  1150. @uref{http://sph.mn/}
  1151. @end itemize
  1152. @end itemize
  1153. @node Programming paradigm
  1154. @chapter Programming paradigm
  1155. @menu
  1156. * "Object-oriented programming"::
  1157. * Relational programming::
  1158. * Functional programming::
  1159. @end menu
  1160. @node "Object-oriented programming"
  1161. @section "Object-oriented programming"
  1162. @itemize
  1163. @item
  1164. GOOPS
  1165. @itemize
  1166. @item
  1167. GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/GOOPS.html}
  1168. @end itemize
  1169. @end itemize
  1170. @menu
  1171. * Prototype based::
  1172. @end menu
  1173. @node Prototype based
  1174. @subsection Prototype based
  1175. @itemize
  1176. @item
  1177. Shelf
  1178. @itemize
  1179. @item
  1180. git repo: @uref{https://github.com/mwitmer/Shelf}
  1181. @end itemize
  1182. @end itemize
  1183. @node Relational programming
  1184. @section Relational programming
  1185. @itemize
  1186. @item
  1187. @code{minikanren}
  1188. @itemize
  1189. @item
  1190. git repository at GitHub: @uref{https://github.com/ijp/minikanren}
  1191. @item
  1192. miniKanren uncourse by William Byrd: @uref{https://duckduckgo.com/?q=minikanren+uncourse&t=h_&iax=videos&ia=videos&iai=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DiCuVTGWNU3s}
  1193. @end itemize
  1194. @end itemize
  1195. @node Functional programming
  1196. @section Functional programming
  1197. @itemize
  1198. @item
  1199. Monad implementations
  1200. @itemize
  1201. @item
  1202. git repository at GitHub: @uref{https://github.com/ijp/monad}
  1203. @end itemize
  1204. @end itemize
  1205. @node Tools
  1206. @chapter Tools
  1207. @menu
  1208. * Project management::
  1209. @end menu
  1210. @node Project management
  1211. @section Project management
  1212. @itemize
  1213. @item
  1214. @code{guile-hall}
  1215. @itemize
  1216. @item
  1217. git repository at GitLab: @uref{https://gitlab.com/a-sassmannshausen/guile-hall}
  1218. @end itemize
  1219. @item
  1220. @code{homebrew-guile}: @uref{https://github.com/aconchillo/}
  1221. @end itemize
  1222. @menu
  1223. * Package managers::
  1224. @end menu
  1225. @node Package managers
  1226. @subsection Package managers
  1227. @itemize
  1228. @item
  1229. @code{guildhall}
  1230. @itemize
  1231. @item
  1232. git repository at GitHub: @uref{https://github.com/ijp/guildhall}
  1233. @end itemize
  1234. @end itemize
  1235. @node Blogs
  1236. @chapter Blogs
  1237. @itemize
  1238. @item
  1239. @uref{https://hyper.dev/}
  1240. @item
  1241. @end itemize
  1242. @node Other (3)
  1243. @chapter Other
  1244. @itemize
  1245. @item
  1246. SPH lib, collection of Guile libraries
  1247. @itemize
  1248. @item
  1249. website: @uref{http://sph.mn/computer/software/sph-lib.html}
  1250. @end itemize
  1251. @end itemize
  1252. @node Other lists of Guile software
  1253. @chapter Other lists of Guile software
  1254. @itemize
  1255. @item
  1256. official GNU Guile website library list: @uref{https://www.gnu.org/software/guile/libraries/}
  1257. @item
  1258. SPH list: @uref{http://sph.mn/foreign/guile-software.html}
  1259. @end itemize
  1260. @node Videos / Talks / Presentations
  1261. @chapter Videos / Talks / Presentations
  1262. This category is still empty. Help filling it with interesting GNU Guile related videos, talks or presentations!
  1263. @bye