list.texi 53 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575
  1. \input texinfo @c -*- texinfo -*-
  2. @c %**start of header
  3. @setfilename list.info
  4. @settitle Guile Awesome List
  5. @documentencoding UTF-8
  6. @documentlanguage en
  7. @c %**end of header
  8. @finalout
  9. @titlepage
  10. @title Guile Awesome List
  11. @author Zelphir Kaltstahl (help & input from Guile community)
  12. @end titlepage
  13. @contents
  14. @ifnottex
  15. @node Top
  16. @top Guile Awesome List
  17. @end ifnottex
  18. @menu
  19. * Manuals::
  20. * Tutorials / Guides / Books::
  21. * Libraries::
  22. * Projects::
  23. * Programming paradigm::
  24. * Tools::
  25. * Blogs::
  26. * Other: Other (5).
  27. * Other lists of Guile software::
  28. * Videos / Talks / Presentations::
  29. @detailmenu
  30. --- The Detailed Node Listing ---
  31. Tutorials / Guides / Books
  32. * General GNU Guile / Scheme::
  33. * Macros::
  34. * Monads::
  35. * FFI - Foreign Function Interface::
  36. Macros
  37. * CK macros::
  38. Libraries
  39. * Async::
  40. * Browser::
  41. * Chat::
  42. * Compression::
  43. * Computer vision::
  44. * Configuration::
  45. * Cryptography::
  46. * Databases::
  47. * Data structures::
  48. * Development environments::
  49. * Device management::
  50. * Distributed computing::
  51. * E-Mail::
  52. * Event loop::
  53. * FFI - Foreign Function Interface: FFI - Foreign Function Interface (1).
  54. * File formats::
  55. * File system::
  56. * Game development::
  57. * Games::
  58. * Genomics::
  59. * Graphics::
  60. * GUI development::
  61. * Language::
  62. * Logging::
  63. * Machine Learning::
  64. * Macros: Macros (1).
  65. * Message Queues::
  66. * Network programming::
  67. * Parallelism::
  68. * Parsing::
  69. * Plotting::
  70. * Protocols::
  71. * Serialization formats::
  72. * SRFI (Scheme Request For Implementation) implementations::
  73. * Strings::
  74. * Regular expressions::
  75. * REPL (Read Eval Print Loop)::
  76. * RPC (Remote Procedure Call)::
  77. * Scientific computing and mathematics::
  78. * Search engine::
  79. * TUI development::
  80. * Unit Testing::
  81. * Version control systems::
  82. * Web Development::
  83. * Window manager::
  84. * Working with code::
  85. * Other::
  86. Chat
  87. * Chat clients::
  88. * Chat bots::
  89. Databases
  90. * Generic::
  91. * Postgres::
  92. * Sqlite::
  93. * MySQL::
  94. * Redis::
  95. * CouchDB::
  96. * Other: Other (1).
  97. Data structures
  98. * Purely functional data structures (PDFS)::
  99. * RDF::
  100. * Lenses::
  101. * Other: Other (2).
  102. File formats
  103. * JSON::
  104. * CSV::
  105. * XML::
  106. * Markdown::
  107. * Texinfo::
  108. * JPEG::
  109. * ICS::
  110. * torrent::
  111. * Other: Other (3).
  112. Graphics
  113. * Image processing::
  114. Parsing
  115. * Parser Combinators::
  116. * Parser Generator::
  117. * Other: Other (4).
  118. Scientific computing and mathematics
  119. * Interaction with the Jupyter ecosystem::
  120. Unit Testing
  121. * TAP output::
  122. Web Development
  123. * Web frameworks::
  124. * Tooling / Additional libraries::
  125. * Static website generators::
  126. * Template engine::
  127. * Interaction with services::
  128. * Web application examples::
  129. * Web drivers / Selenium::
  130. Programming paradigm
  131. * "Object-oriented programming"::
  132. * Relational programming::
  133. * Functional programming::
  134. "Object-oriented programming"
  135. * Prototype based::
  136. Tools
  137. * Editor support::
  138. * Project management::
  139. Project management
  140. * Package managers::
  141. @end detailmenu
  142. @end menu
  143. @node Manuals
  144. @chapter Manuals
  145. @itemize
  146. @item
  147. There is a huge reference manual for GNU Guile on the GNU website: @uref{https://www.gnu.org/software/guile/manual/}.
  148. @end itemize
  149. @node Tutorials / Guides / Books
  150. @chapter Tutorials / Guides / Books
  151. @menu
  152. * General GNU Guile / Scheme::
  153. * Macros::
  154. * Monads::
  155. * FFI - Foreign Function Interface::
  156. @end menu
  157. @node General GNU Guile / Scheme
  158. @section General GNU Guile / Scheme
  159. @itemize
  160. @item
  161. Guile reference manual
  162. @itemize
  163. @item
  164. website: @uref{https://www.gnu.org/software/guile/manual/}
  165. @end itemize
  166. @item
  167. official Guile tutorial
  168. @itemize
  169. @item
  170. website: @uref{https://www.gnu.org/software/guile/docs/guile-tut/tutorial.html}
  171. @end itemize
  172. @item
  173. Structure and Interpretation of Computer Programs (SICP)
  174. @itemize
  175. @item
  176. website: @uref{https://mitpress.mit.edu/sites/default/files/sicp/index.html}
  177. @item
  178. PDF version: @uref{https://github.com/sarabander/sicp-pdf}
  179. @end itemize
  180. @item
  181. The Little Schemer
  182. @itemize
  183. @item
  184. website: @uref{https://mitpress.mit.edu/books/little-schemer-fourth-edition}
  185. @end itemize
  186. @item
  187. "Learn Scheme in 15 minutes"
  188. @itemize
  189. @item
  190. website: @uref{https://web-artanis.com/scheme.html}
  191. @end itemize
  192. @item
  193. guile-tutorial
  194. @itemize
  195. @item
  196. git repo: @uref{https://notabug.org/cwebber/guile-tutorial}
  197. @end itemize
  198. @item
  199. Guile Hacker Handbook
  200. @itemize
  201. @item
  202. website: @uref{https://jeko.frama.io/en/index.html}
  203. @item
  204. git repo: @uref{https://framagit.org/Jeko/jeko.frama.io}
  205. @end itemize
  206. @item
  207. The Scheme Programming Language
  208. @itemize
  209. @item
  210. web version: @uref{https://scheme.com/tspl4/}
  211. @end itemize
  212. @end itemize
  213. @node Macros
  214. @section Macros
  215. @itemize
  216. @item
  217. Macros in the GNU Guile reference manual
  218. @itemize
  219. @item
  220. website: @uref{https://www.gnu.org/software/guile/manual/html_node/Macros.html}
  221. @end itemize
  222. @item
  223. Writing Hygienic Macros in Scheme with Syntax-Case
  224. @itemize
  225. @item
  226. article: @uref{https://doc.lagout.org/programmation/Lisp/Scheme/Programming%20With%20Hygienic%20Macros%20-%20R%20K%20Dybvig.pdf}
  227. @end itemize
  228. @item
  229. Community Scheme Wiki about macros
  230. @itemize
  231. @item
  232. scheme-faq-macros
  233. @itemize
  234. @item
  235. website: @uref{http://community.schemewiki.org/?scheme-faq-macros}
  236. @end itemize
  237. @item
  238. syntax-case
  239. @itemize
  240. @item
  241. website: @uref{http://community.schemewiki.org/?syntax-case}
  242. @end itemize
  243. @end itemize
  244. @item
  245. A Scheme Syntax-Rules Primer
  246. @itemize
  247. @item
  248. website: @uref{http://www.willdonnelly.net/blog/scheme-syntax-rules/}
  249. @end itemize
  250. @item
  251. Macro-by-Example: Deriving Syntactic Transformations from their Specifications
  252. @itemize
  253. @item
  254. paper: @uref{https://legacy.cs.indiana.edu/ftp/techreports/TR206.pdf}
  255. @end itemize
  256. @item
  257. wikibooks.org about macros
  258. @itemize
  259. @item
  260. website: @uref{https://en.wikibooks.org/wiki/Scheme_Programming/Macros}
  261. @end itemize
  262. @item
  263. Advanced Scheme Techniques - Some Naughty Bits
  264. @itemize
  265. @item
  266. slides: @uref{http://people.csail.mit.edu/jhbrown/scheme/macroslides04.pdf}
  267. @end itemize
  268. @item
  269. C2 Wiki Scheme Macro Examples
  270. @itemize
  271. @item
  272. website: @uref{http://wiki.c2.com/?SchemeMacroExamples}
  273. @end itemize
  274. @item
  275. JRM's Syntax-rules Primer for the Merely Eccentric
  276. @itemize
  277. @item
  278. website: @uref{https://hipster.home.xs4all.nl/lib/scheme/gauche/define-syntax-primer.txt}
  279. @itemize
  280. @item
  281. another location: @uref{http://www.phyast.pitt.edu/~micheles/syntax-rules.pdf}
  282. @end itemize
  283. @end itemize
  284. @item
  285. Scheme Macros I: Modules
  286. @itemize
  287. @item
  288. website: @uref{https://blog.veitheller.de/Scheme_Macros_I:_Modules.html}
  289. @end itemize
  290. @item
  291. Writing Macros in Continuation-Passing Style
  292. @itemize
  293. @item
  294. paper: @uref{https://www.semanticscholar.org/paper/Writing-Macros-in-Continuation-Passing-Style-Hilsdale-Friedman/752575dc24b2bb6e74ee6146df71860e10e3aee9#citing-papers} (TODO: find a more permanent looking link)
  295. @end itemize
  296. @item
  297. Low- and high-level macro programming in Scheme
  298. @itemize
  299. @item
  300. website: @uref{http://okmij.org/ftp/Scheme/macros.html}
  301. @end itemize
  302. @end itemize
  303. @menu
  304. * CK macros::
  305. @end menu
  306. @node CK macros
  307. @subsection CK macros
  308. @itemize
  309. @item
  310. Applicative syntax-rules: macros that compose better
  311. @itemize
  312. @item
  313. website: @uref{http://okmij.org/ftp/Scheme/macros.html#ck-macros}
  314. @end itemize
  315. @item
  316. Chicken Scheme Wiki about ck-macros
  317. @itemize
  318. @item
  319. website: @uref{http://wiki.call-cc.org/eggref/5/ck-macros}
  320. @end itemize
  321. @end itemize
  322. @node Monads
  323. @section Monads
  324. @itemize
  325. @item
  326. A Schemer's Introduction to Monads
  327. @itemize
  328. @item
  329. website: @uref{http://www.ccs.neu.edu/home/dherman/research/tutorials/monads-for-schemers.txt}
  330. @end itemize
  331. @item
  332. A Schemer’s View of Monads - Partial Draft
  333. @itemize
  334. @item
  335. website: @uref{https://cgi.sice.indiana.edu/~c311/lib/exe/fetch.php?media=manymonads.pdf}
  336. @end itemize
  337. @item
  338. Monadic Programming in Scheme
  339. @itemize
  340. @item
  341. website: @uref{http://okmij.org/ftp/Scheme/monad-in-Scheme.html}
  342. @end itemize
  343. @end itemize
  344. @node FFI - Foreign Function Interface
  345. @section FFI - Foreign Function Interface
  346. @itemize
  347. @item
  348. GNU Guile standard library FFI
  349. @itemize
  350. @item
  351. GNU software reference manual: @uref{https://www.gnu.org/software/guile/manual/html_node/Foreign-Function-Interface.html}
  352. @end itemize
  353. @end itemize
  354. @node Libraries
  355. @chapter Libraries
  356. @menu
  357. * Async::
  358. * Browser::
  359. * Chat::
  360. * Compression::
  361. * Computer vision::
  362. * Configuration::
  363. * Cryptography::
  364. * Databases::
  365. * Data structures::
  366. * Development environments::
  367. * Device management::
  368. * Distributed computing::
  369. * E-Mail::
  370. * Event loop::
  371. * FFI - Foreign Function Interface: FFI - Foreign Function Interface (1).
  372. * File formats::
  373. * File system::
  374. * Game development::
  375. * Games::
  376. * Genomics::
  377. * Graphics::
  378. * GUI development::
  379. * Language::
  380. * Logging::
  381. * Machine Learning::
  382. * Macros: Macros (1).
  383. * Message Queues::
  384. * Network programming::
  385. * Parallelism::
  386. * Parsing::
  387. * Plotting::
  388. * Protocols::
  389. * Serialization formats::
  390. * SRFI (Scheme Request For Implementation) implementations::
  391. * Strings::
  392. * Regular expressions::
  393. * REPL (Read Eval Print Loop)::
  394. * RPC (Remote Procedure Call)::
  395. * Scientific computing and mathematics::
  396. * Search engine::
  397. * TUI development::
  398. * Unit Testing::
  399. * Version control systems::
  400. * Web Development::
  401. * Window manager::
  402. * Working with code::
  403. * Other::
  404. @end menu
  405. @node Async
  406. @section Async
  407. @itemize
  408. @item
  409. 8sync
  410. @itemize
  411. @item
  412. git repository at Savannah: @uref{https://savannah.gnu.org/projects/8sync}
  413. @item
  414. manual / GNU software manual: @uref{https://www.gnu.org/software/8sync/manual/html_node/index.html#Top}
  415. @item
  416. website / GNU software page: @uref{https://www.gnu.org/software/8sync/}
  417. @item
  418. tutorial: @uref{https://www.gnu.org/software/8sync/manual/html_node/Tutorial.html#Tutorial}
  419. @end itemize
  420. @end itemize
  421. @node Browser
  422. @section Browser
  423. @itemize
  424. @item
  425. Nomad
  426. @itemize
  427. @item
  428. git repository at non-GNU Savannah: @uref{https://savannah.nongnu.org/projects/nomad/}
  429. @item
  430. website: @uref{https://www.nongnu.org/nomad/}
  431. @end itemize
  432. @end itemize
  433. @node Chat
  434. @section Chat
  435. @menu
  436. * Chat clients::
  437. * Chat bots::
  438. @end menu
  439. @node Chat clients
  440. @subsection Chat clients
  441. @enumerate
  442. @item
  443. IRC
  444. @itemize
  445. @item
  446. @code{guile-irc}
  447. @itemize
  448. @item
  449. git repository at GitHub: @uref{https://github.com/rekado/guile-irc}
  450. @item
  451. description: @emph{"An irc library for GNU guile."} (@uref{https://github.com/rekado/guile-irc/blob/master/README})
  452. @item
  453. API reference manual: @uref{http://fbs.github.io/guile-irc/}
  454. @end itemize
  455. @end itemize
  456. @end enumerate
  457. @node Chat bots
  458. @subsection Chat bots
  459. @enumerate
  460. @item
  461. IRC
  462. @itemize
  463. @item
  464. Cunning Bot
  465. @itemize
  466. @item
  467. description:
  468. @quotation
  469. Cunning Bot is a command-oriented IRC bot written in Guile Scheme.
  470. (@uref{https://github.com/cadrspace/cunning-bot/blob/cadrobot/README})
  471. @end quotation
  472. @item
  473. git repo: @uref{https://github.com/cadrspace/cunning-bot}
  474. @end itemize
  475. @end itemize
  476. @end enumerate
  477. @node Compression
  478. @section Compression
  479. @itemize
  480. @item
  481. @code{guile-zlib}
  482. @itemize
  483. @item
  484. git repository at GitHub: @uref{https://github.com/davexunit/guile-zlib}
  485. @end itemize
  486. @end itemize
  487. @node Computer vision
  488. @section Computer vision
  489. @itemize
  490. @item
  491. GNU Guile-CV
  492. @itemize
  493. @item
  494. website: @uref{https://www.gnu.org/software/guile-cv/}
  495. @item
  496. GNU software reference manual: @uref{https://www.gnu.org/software/guile-cv/manual/html_node/index.html}
  497. @item
  498. description:
  499. @quotation
  500. Guile-CV - Image Processing and Analysis in Guile - is a Computer Vision functional programming library for the Guile Scheme language.
  501. Guile-CV is based on Vigra (Vision with Generic Algorithms), enhanced with additional algorithms (Image Textures, Delineate, Reconstruction and many more), all accessible through a nice, clean and easy to use high level API@.
  502. Guile-CV is natively multi-threaded, and takes advantage of multiple cores, using high-level and fine grained application-level parallelism constructs available in Guile, based on its support to POSIX threads.
  503. (@uref{https://www.gnu.org/software/guile-cv/index.html})
  504. @end quotation
  505. @end itemize
  506. @end itemize
  507. @node Configuration
  508. @section Configuration
  509. @itemize
  510. @item
  511. @code{guile-config}
  512. @itemize
  513. @item
  514. git repository at GitLab: @uref{https://gitlab.com/a-sassmannshausen/guile-config}
  515. @end itemize
  516. @end itemize
  517. @node Cryptography
  518. @section Cryptography
  519. @itemize
  520. @item
  521. @code{guile-gcrypt}
  522. @itemize
  523. @item
  524. git repo: @uref{https://notabug.org/cwebber/guile-gcrypt}
  525. @item
  526. description:
  527. @quotation
  528. Guile-Gcrypt provides a Guile 3.x/2.x interface to a subset of the GNU
  529. Libgcrypt crytographic library, which is itself used by the GNU Privacy Guard
  530. (GPG).
  531. Guile-Gcrypt provides modules for cryptographic hash functions, message
  532. authentication codes (MAC), public-key cryptography, strong randomness, and
  533. more. It is implemented using the foreign function interface (FFI) of Guile.
  534. @end quotation
  535. @end itemize
  536. @end itemize
  537. @node Databases
  538. @section Databases
  539. @menu
  540. * Generic::
  541. * Postgres::
  542. * Sqlite::
  543. * MySQL::
  544. * Redis::
  545. * CouchDB::
  546. * Other: Other (1).
  547. @end menu
  548. @node Generic
  549. @subsection Generic
  550. @itemize
  551. @item
  552. Generic
  553. @itemize
  554. @item
  555. @code{guile-dbi}
  556. @itemize
  557. @item
  558. git repository at GitHub: @uref{https://github.com/opencog/guile-dbi}
  559. @item
  560. documentation: @uref{https://htmlpreview.github.io/?https://github.com/opencog/guile-dbi/blob/master/website/guile-dbi.html}
  561. @item
  562. offers MySQL, Postgresql and SQLite3 interfaces
  563. @end itemize
  564. @end itemize
  565. @end itemize
  566. @node Postgres
  567. @subsection Postgres
  568. @itemize
  569. @item
  570. @code{guile-squee}
  571. @itemize
  572. @item
  573. git repository at notabug.org: @uref{https://notabug.org/cwebber/guile-squee}
  574. @item
  575. documentation at: ???
  576. @end itemize
  577. @item
  578. @code{guile-dbd-postgresql}
  579. @itemize
  580. @item
  581. git repository: @uref{https://github.com/opencog/guile-dbi/tree/master/guile-dbd-postgresql}
  582. @item
  583. documentation: @uref{https://github.com/opencog/guile-dbi/blob/master/guile-dbd-postgresql/README}
  584. @item
  585. description: This is a sub-repository of @code{guile-dbi} which is used for dealing with the Postgres side of things.
  586. @end itemize
  587. @end itemize
  588. @node Sqlite
  589. @subsection Sqlite
  590. @itemize
  591. @item
  592. @code{guile-sqlite3}
  593. @itemize
  594. @item
  595. git repository at notabug.org: @uref{https://notabug.org/guile-sqlite3/guile-sqlite3.git}
  596. @item
  597. documentation at: ???
  598. @end itemize
  599. @item
  600. @code{guile-dbd-sqlite3}
  601. @itemize
  602. @item
  603. git repository at GitHub: @uref{https://github.com/opencog/guile-dbi/tree/master/guile-dbd-sqlite3}
  604. @item
  605. documentation: @uref{https://github.com/opencog/guile-dbi/blob/master/guile-dbd-sqlite3/README}
  606. @item
  607. description: This is a sub-repository of @code{guile-dbi} which is used for dealing with the Sqlite3 side of things.
  608. @end itemize
  609. @end itemize
  610. @node MySQL
  611. @subsection MySQL
  612. @itemize
  613. @item
  614. @code{guile-dbd-mysql}
  615. @itemize
  616. @item
  617. git repository at GitHub: @uref{https://github.com/opencog/guile-dbi/tree/master/guile-dbd-mysql}
  618. @item
  619. documentation: @uref{https://github.com/opencog/guile-dbi/blob/master/guile-dbd-mysql/README}
  620. @item
  621. description: This is a sub-repository of @code{guile-dbi} which is used for dealing with the MySQL side of things.
  622. @end itemize
  623. @end itemize
  624. @node Redis
  625. @subsection Redis
  626. @itemize
  627. @item
  628. @code{guile-redis}
  629. @itemize
  630. @item
  631. git repository at GitHub: @uref{https://github.com/aconchillo/guile-redis}
  632. @end itemize
  633. @end itemize
  634. @node CouchDB
  635. @subsection CouchDB
  636. @itemize
  637. @item
  638. CouchDB
  639. @itemize
  640. @item
  641. @code{guile-couchdb}
  642. @item
  643. git repo: @uref{https://github.com/ukulanne/guile-couchdb}
  644. @item
  645. description: CouchDB bindings for Guile
  646. @end itemize
  647. @end itemize
  648. @node Other (1)
  649. @subsection Other
  650. @itemize
  651. @item
  652. WiredTiger (@uref{http://www.wiredtiger.com/}
  653. @itemize
  654. @item
  655. @code{guile-wiredtiger}
  656. @itemize
  657. @item
  658. blog post: @uref{https://hyper.dev/blog/getting-started-with-guile-wiredtiger.html}
  659. @item
  660. git repository at: ??? (framagit requires login?)
  661. @end itemize
  662. @end itemize
  663. @item
  664. @code{guile-sparql}: @uref{https://github.com/roelj/guile-sparql}
  665. @item
  666. @code{sparqling-genomics}: @uref{https://github.com/UMCUGenetics/sparqling-genomics}
  667. @item
  668. @code{nomunofu}
  669. @itemize
  670. @item
  671. mentioned on: @uref{https://hyper.dev/blog/nomunofu.html}
  672. @item
  673. git repo: ???
  674. @end itemize
  675. @end itemize
  676. @node Data structures
  677. @section Data structures
  678. @menu
  679. * Purely functional data structures (PDFS)::
  680. * RDF::
  681. * Lenses::
  682. * Other: Other (2).
  683. @end menu
  684. @node Purely functional data structures (PDFS)
  685. @subsection Purely functional data structures (PDFS)
  686. @itemize
  687. @item
  688. @code{pdfs}
  689. @itemize
  690. @item
  691. git repository at GitHub: @uref{https://github.com/ijp/pfds}
  692. @item
  693. documentation: ???
  694. @end itemize
  695. @item
  696. @code{fectors}
  697. @itemize
  698. @item
  699. git repository at GitHub: @uref{https://github.com/ijp/fectors}
  700. @end itemize
  701. @end itemize
  702. @node RDF
  703. @subsection RDF
  704. @itemize
  705. @item
  706. @code{guile-rdf}
  707. @itemize
  708. @item
  709. git repository at framagit: @uref{https://framagit.org/tyreunom/guile-rdf}
  710. @end itemize
  711. @end itemize
  712. @node Lenses
  713. @subsection Lenses
  714. @itemize
  715. @item
  716. @code{guile-lens}
  717. @itemize
  718. @item
  719. git repository at GitLab: @uref{https://gitlab.com/a-sassmannshausen/guile-lens}
  720. @end itemize
  721. @end itemize
  722. @node Other (2)
  723. @subsection Other
  724. @itemize
  725. @item
  726. @code{copernic}
  727. @itemize
  728. @item
  729. git repository at GitHub: @uref{https://github.com/amirouche/copernic}
  730. @end itemize
  731. @item
  732. @code{scheme-bytestructures}
  733. @itemize
  734. @item
  735. git repo: @uref{https://github.com/TaylanUB/scheme-bytestructures}
  736. @item
  737. description:
  738. @quotation
  739. [@dots{}] offers a system imitating the type system of the C programming language, to be used on bytevectors. C's type system works on raw memory, and ours works on bytevectors which are an abstraction over raw memory in Scheme. The system is in fact more powerful than the C type system, elevating types to first-class status.
  740. @end quotation
  741. @end itemize
  742. @item
  743. @code{guile-newra}
  744. @itemize
  745. @item
  746. git repo: @uref{https://github.com/lloda/guile-newra}
  747. @item
  748. description: "A Scheme replacement for Guile's array system" (@uref{https://github.com/lloda/guile-newra})
  749. @end itemize
  750. @item
  751. Treaps
  752. @itemize
  753. @item
  754. website: @uref{http://okmij.org/ftp/Scheme/#treaps}
  755. @item
  756. description:
  757. @quotation
  758. An ordered dictionary data structure, based on randomized search trees (treaps) by Seidel and Aragon. Compared to red-black trees, treap is simpler and more elegant, and can get by without sentinels.
  759. (@uref{http://okmij.org/ftp/Scheme/#treaps})
  760. @end quotation
  761. @end itemize
  762. @end itemize
  763. @node Development environments
  764. @section Development environments
  765. @itemize
  766. @item
  767. @code{guile-studio}
  768. @itemize
  769. @item
  770. git repo: @uref{https://git.elephly.net/gitweb.cgi?p=software/guile-studio.git;a=tree}
  771. @item
  772. description:
  773. @quotation
  774. Racket has Dr Racket. Guile has @dots{} Emacs? This is Emacs with a few
  775. settings that make working with Guile easier for people new to Emacs.
  776. Features include: CUA mode, Geiser, tool bar icons to evaluate Guile
  777. buffers, support for Guile's very own picture language, code completion, a
  778. simple mode line, etc. [@dots{}]
  779. @end quotation
  780. (@uref{https://git.elephly.net/gitweb.cgi?p=software/guile-studio.git;a=blob;f=README.org;hb=HEAD})
  781. @end itemize
  782. @end itemize
  783. @node Device management
  784. @section Device management
  785. @itemize
  786. @item
  787. @code{guile-udev}:
  788. @itemize
  789. @item
  790. description: @emph{"Guile-Udev is a GNU Guile bindings to libudev."} (@uref{https://github.com/artyom-poptsov/guile-udev/blob/master/README})
  791. @item
  792. git repo: @uref{https://github.com/artyom-poptsov/guile-udev}
  793. @item
  794. documentation: (inside the git repo: @uref{https://github.com/artyom-poptsov/guile-udev/blob/master/doc/guile-udev.texi})
  795. @item
  796. examples: (inside the git repo: @uref{https://github.com/artyom-poptsov/guile-udev/tree/master/examples})
  797. @end itemize
  798. @end itemize
  799. @node Distributed computing
  800. @section Distributed computing
  801. @itemize
  802. @item
  803. @code{metabash}
  804. @itemize
  805. @item
  806. git repository: @uref{https://github.com/artyom-poptsov/metabash}
  807. @item
  808. description: @emph{"GNU Guile module for running distributed shell pipelines."} -- @uref{https://github.com/artyom-poptsov/metabash/blob/master/README.org}
  809. @end itemize
  810. @end itemize
  811. @node E-Mail
  812. @section E-Mail
  813. @itemize
  814. @item
  815. GNU Mailutils ??? (@uref{https://mailutils.org/})
  816. @item
  817. @code{guile-email}: @uref{https://guile-email.systemreboot.net/}
  818. @end itemize
  819. @node Event loop
  820. @section Event loop
  821. @itemize
  822. @item
  823. @code{guile-a-sync}
  824. @itemize
  825. @item
  826. git repository at GitHub: @uref{https://github.com/ChrisVine/guile-a-sync}
  827. @item
  828. documentation: ?
  829. @end itemize
  830. @end itemize
  831. @node FFI - Foreign Function Interface (1)
  832. @section FFI - Foreign Function Interface
  833. @itemize
  834. @item
  835. GNU Guile standard library FFI
  836. @itemize
  837. @item
  838. GNU software reference manual: @uref{https://www.gnu.org/software/guile/manual/html_node/Foreign-Function-Interface.html}
  839. @end itemize
  840. @item
  841. @code{ffi-helper} from NYACC
  842. @itemize
  843. @item
  844. documentation: @uref{https://www.nongnu.org/nyacc/ffi-help.html}
  845. @end itemize
  846. @end itemize
  847. @node File formats
  848. @section File formats
  849. @menu
  850. * JSON::
  851. * CSV::
  852. * XML::
  853. * Markdown::
  854. * Texinfo::
  855. * JPEG::
  856. * ICS::
  857. * torrent::
  858. * Other: Other (3).
  859. @end menu
  860. @node JSON
  861. @subsection JSON
  862. @itemize
  863. @item
  864. JSON
  865. @itemize
  866. @item
  867. @code{guile-json}
  868. @itemize
  869. @item
  870. on GitHub: @uref{https://github.com/aconchillo/guile-json}
  871. @item
  872. on savannah: @uref{http://savannah.nongnu.org/projects/guile-json/}
  873. @end itemize
  874. @end itemize
  875. @end itemize
  876. @node CSV
  877. @subsection CSV
  878. @itemize
  879. @item
  880. @code{guile-csv}
  881. @itemize
  882. @item
  883. git repository at GitLab: @uref{https://gitlab.com/NalaGinrut/guile-csv}
  884. @end itemize
  885. @item
  886. @code{guile-dsv}
  887. @itemize
  888. @item
  889. This is more general, but can work with CSV as well.
  890. @item
  891. git repository at GitHub: @uref{https://github.com/artyom-poptsov/guile-dsv}
  892. @end itemize
  893. @end itemize
  894. @node XML
  895. @subsection XML
  896. @itemize
  897. @item
  898. Guile's standard library SXML implementation
  899. @itemize
  900. @item
  901. GNU software manual: @uref{https://www.gnu.org/software/guile/manual/html_node/SXML.html}
  902. @item
  903. Basically your templates become functions or macros.
  904. @item
  905. The structure of your document is kept as Scheme data structures.
  906. @itemize
  907. @item
  908. This avoids having parse the document as a long string into an internal data structure to perform semantic transformations.
  909. @item
  910. It enables pattern matching without resorting to things like regular expressions and similar shenanigans.
  911. @end itemize
  912. @end itemize
  913. @end itemize
  914. @node Markdown
  915. @subsection Markdown
  916. @itemize
  917. @item
  918. @code{guile-commonmark}
  919. @itemize
  920. @item
  921. git repository at GitHub: @uref{https://github.com/OrangeShark/guile-commonmark}
  922. @item
  923. documentation: ???
  924. @end itemize
  925. @end itemize
  926. @node Texinfo
  927. @subsection Texinfo
  928. @itemize
  929. @item
  930. Guile standard library texinfo functionality
  931. @itemize
  932. @item
  933. GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/texinfo.html}
  934. @end itemize
  935. @end itemize
  936. @node JPEG
  937. @subsection JPEG
  938. @itemize
  939. @item
  940. @code{guile-jpeg}: a library for parsing JPEG files
  941. @itemize
  942. @item
  943. git repository at GitHub: @uref{https://github.com/guildhall/guile-jpeg}
  944. @end itemize
  945. @end itemize
  946. @strong{*}
  947. @node ICS
  948. @subsection ICS
  949. @itemize
  950. @item
  951. @code{guile-ics}
  952. @itemize
  953. @item
  954. git repository at GitHub: @uref{https://github.com/artyom-poptsov/guile-ics}
  955. @end itemize
  956. @end itemize
  957. @node torrent
  958. @subsection torrent
  959. @itemize
  960. @item
  961. @code{torrent}
  962. @itemize
  963. @item
  964. git repository at GitHub: @uref{https://github.com/o-nly/torrent}
  965. @item
  966. documentation at: ???
  967. @end itemize
  968. @end itemize
  969. @node Other (3)
  970. @subsection Other
  971. @itemize
  972. @item
  973. 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.
  974. @end itemize
  975. @node File system
  976. @section File system
  977. @itemize
  978. @item
  979. @code{sdupes}, duplicate file detection
  980. @itemize
  981. @item
  982. git repository at GitHub: @uref{https://github.com/sph-mn/sdupes}
  983. @end itemize
  984. @end itemize
  985. @node Game development
  986. @section Game development
  987. @itemize
  988. @item
  989. Chickadee
  990. @itemize
  991. @item
  992. describes itself as "game development toolkit"
  993. @item
  994. OpenGL based
  995. @item
  996. website: @uref{https://dthompson.us/projects/chickadee.html}
  997. @item
  998. manual: @uref{https://dthompson.us/manuals/chickadee/index.html}
  999. @end itemize
  1000. @end itemize
  1001. @node Games
  1002. @section Games
  1003. @itemize
  1004. @item
  1005. StayAlive
  1006. @itemize
  1007. @item
  1008. git repo: @uref{https://github.com/mwitmer/StayAlive}
  1009. @end itemize
  1010. @item
  1011. dryads-wake
  1012. @itemize
  1013. @item
  1014. git repo: @uref{https://hg.sr.ht/~arnebab/dryads-wake}
  1015. @item
  1016. description:
  1017. @quotation
  1018. Dryads Wake is a game of dialogue and choices.
  1019. (@uref{https://hg.sr.ht/~arnebab/dryads-wake})
  1020. @end quotation
  1021. @end itemize
  1022. @end itemize
  1023. @node Genomics
  1024. @section Genomics
  1025. @itemize
  1026. @item
  1027. @code{sparqling-genomics}
  1028. @itemize
  1029. @item
  1030. git repo: @uref{https://github.com/UMCUGenetics/sparqling-genomics}
  1031. @item
  1032. description:
  1033. @quotation
  1034. This project provides programs to extract RDF triplets from commonly used file formats in genomics. It also provides a web-based environment to explore the RDF triplets once inserted in a triple store.
  1035. (@uref{https://github.com/UMCUGenetics/sparqling-genomics})
  1036. @end quotation
  1037. @item
  1038. usage example: @uref{https://github.com/UMCUGenetics/sparqling-genomics/blob/dc5fea515c30aa26ff60b77911438689473d125b/web/ldap/authenticate.scm.in#L148}
  1039. @end itemize
  1040. @end itemize
  1041. @node Graphics
  1042. @section Graphics
  1043. @itemize
  1044. @item
  1045. @code{guile-sdl}
  1046. @itemize
  1047. @item
  1048. GNU software page: @uref{https://www.gnu.org/software/guile-sdl/}
  1049. @item
  1050. gnuvola page of examples: @uref{http://www.gnuvola.org/software/guile-sdl-demos/}
  1051. @item
  1052. gnuvola software page: @uref{http://www.gnuvola.org/software/guile-sdl-demos/}
  1053. @end itemize
  1054. @item
  1055. @code{guile-sdl2}
  1056. @itemize
  1057. @item
  1058. project website: @uref{https://dthompson.us/projects/guile-sdl2.html}
  1059. @end itemize
  1060. @item
  1061. @code{guile-opengl}
  1062. @itemize
  1063. @item
  1064. GNU software page: @uref{https://www.gnu.org/software/guile-opengl/}
  1065. @item
  1066. GNU software manual page: @uref{https://www.gnu.org/software/guile-opengl/manual/guile-opengl.html}
  1067. @item
  1068. git repository at Savannah: @uref{http://savannah.gnu.org/projects/guile-opengl}
  1069. @end itemize
  1070. @item
  1071. @code{guile-cairo}
  1072. @itemize
  1073. @item
  1074. git repository at Savannah: @uref{http://savannah.nongnu.org/projects/guile-cairo}
  1075. @end itemize
  1076. @item
  1077. @code{guile-jpeg}: a library for parsing JPEG files
  1078. @itemize
  1079. @item
  1080. git repository at GitHub: @uref{https://github.com/guildhall/guile-jpeg}
  1081. @end itemize
  1082. @end itemize
  1083. @menu
  1084. * Image processing::
  1085. @end menu
  1086. @node Image processing
  1087. @subsection Image processing
  1088. @itemize
  1089. @item
  1090. @code{guile-cv}
  1091. @itemize
  1092. @item
  1093. GNU software page: @uref{https://www.gnu.org/software/guile-cv/}
  1094. @item
  1095. git repository at Savannah: @uref{http://git.savannah.gnu.org/cgit/guile-cv.git}
  1096. @end itemize
  1097. @end itemize
  1098. @node GUI development
  1099. @section GUI development
  1100. @itemize
  1101. @item
  1102. @code{guile-gi}
  1103. @itemize
  1104. @item
  1105. git repository at GitHub: @uref{https://github.com/spk121/guile-gi}
  1106. @item
  1107. documentation at: @uref{https://spk121.github.io/guile-gi/}
  1108. @end itemize
  1109. @item
  1110. @code{guile-gnome}
  1111. @itemize
  1112. @item
  1113. GNU software page: @uref{https://www.gnu.org/software/guile-gnome/}
  1114. @item
  1115. git repository at Savannah: @uref{http://git.savannah.gnu.org/cgit/guile-gnome.git}
  1116. @end itemize
  1117. @item
  1118. @code{guile-gtk}
  1119. @itemize
  1120. @item
  1121. website: @uref{https://www.gnu.org/software/guile-gtk/}
  1122. @item
  1123. CVS repository at non-GNU Savannah: @uref{http://savannah.nongnu.org/projects/guile-gtk/}
  1124. @end itemize
  1125. @item
  1126. @code{g-golf}: @uref{https://www.gnu.org/software/g-golf/}
  1127. @end itemize
  1128. @node Language
  1129. @section Language
  1130. @itemize
  1131. @item
  1132. @code{guile-aspell}
  1133. @itemize
  1134. @item
  1135. git repository at GitHub: @uref{https://github.com/spk121/guile-aspell}
  1136. @item
  1137. website: @uref{http://lonelycactus.com/guile-aspell.html}
  1138. @end itemize
  1139. @end itemize
  1140. @node Logging
  1141. @section Logging
  1142. @itemize
  1143. @item
  1144. @code{guile-logging}
  1145. @itemize
  1146. @item
  1147. git repository at GitHub: @uref{https://github.com/shanecelis/guile-logging}
  1148. @end itemize
  1149. @item
  1150. SysLog proposal
  1151. @itemize
  1152. @item
  1153. git repo: @uref{https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/SyslogCowan.md}
  1154. @item
  1155. description: This is a specification for an implementation of syslog.
  1156. @end itemize
  1157. @item
  1158. logging module of @code{sparqling-genomics}
  1159. @itemize
  1160. @item
  1161. git repo: @uref{https://github.com/UMCUGenetics/sparqling-genomics/blob/master/web/logger.scm}
  1162. @item
  1163. description: This is what @code{sparqling-genomics} uses internally.
  1164. @end itemize
  1165. @end itemize
  1166. @node Machine Learning
  1167. @section Machine Learning
  1168. @itemize
  1169. @item
  1170. decision tree
  1171. @itemize
  1172. @item
  1173. @code{guile-ml}
  1174. @itemize
  1175. @item
  1176. repository at notabug.org: @uref{https://notabug.org/ZelphirKaltstahl/guile-ml}
  1177. @end itemize
  1178. @end itemize
  1179. @item
  1180. @code{guile-snowball-stemmer}
  1181. @itemize
  1182. @item
  1183. mentioned on: @uref{https://snowballstem.org/projects.html}
  1184. @item
  1185. mentioned on: @uref{https://github.com/snowballstem/snowball/issues/34#issuecomment-491056371}
  1186. @item
  1187. git repo: unfortunately the link to the repository is broken
  1188. @end itemize
  1189. @item
  1190. AIscm
  1191. @itemize
  1192. @item
  1193. website: @uref{http://wedesoft.github.io/aiscm/}
  1194. @item
  1195. description:
  1196. @quotation
  1197. AIscm is a Guile extension for numerical arrays and tensors. Performance is achieved by using the LLVM JIT compiler.
  1198. (@uref{http://wedesoft.github.io/aiscm/})
  1199. @end quotation
  1200. @end itemize
  1201. @end itemize
  1202. @node Macros (1)
  1203. @section Macros
  1204. @itemize
  1205. @item
  1206. @code{guile-for-loops}
  1207. @itemize
  1208. @item
  1209. mercurial repo: @uref{https://hg.sr.ht/~bjoli/guile-for-loops}
  1210. @item
  1211. description:
  1212. @quotation
  1213. A re-implementation of a large-ish chunk of rackets for-macros. It is mostly compatible with racket's macros, with the largest omission being the body-or-break clause and some of the sequence iterators (like in-cycle, which can be covered by circular lists). There are other differences of course, like for/foldr not being on par feature-wise, and all the nicities you get by having a generic sequence interfce.
  1214. [@dots{}]
  1215. (@uref{https://hg.sr.ht/~bjoli/guile-for-loops/browse/README.md?rev=580d3fb365ea2734b037ad3ca7f2ab1e4aa5116d})
  1216. @end quotation
  1217. @end itemize
  1218. @item
  1219. @code{megacut} macro:
  1220. @itemize
  1221. @item
  1222. mercurial repo: @uref{https://hg.sr.ht/~bjoli/megacut}
  1223. @item
  1224. description:
  1225. @quotation
  1226. This is a clojure-like lambda shorthand for guile. The macro is called megacut (which is a bad name, since it is not much like cut).
  1227. (@uref{https://hg.sr.ht/~bjoli/megacut/browse/readme.txt?rev=75caf96aa4a9282d489230fe56fff4f1aa5e2564})
  1228. @end quotation
  1229. @end itemize
  1230. @item
  1231. Documentation for Scheme Syntax Extension Packages in SLIB
  1232. @itemize
  1233. @item
  1234. website: @uref{https://people.csail.mit.edu/jaffer/slib/Scheme-Syntax-Extension-Packages.html#Scheme-Syntax-Extension-Packages}
  1235. @end itemize
  1236. @end itemize
  1237. @node Message Queues
  1238. @section Message Queues
  1239. @itemize
  1240. @item
  1241. Zero MQ
  1242. @itemize
  1243. @item
  1244. @code{guile-zmq}
  1245. @itemize
  1246. @item
  1247. git repository at GitLab: @uref{https://gitlab.com/NalaGinrut/guile-zmq}
  1248. @end itemize
  1249. @item
  1250. @code{guile-simple-zmq}
  1251. @itemize
  1252. @item
  1253. git repository at GitHub: @uref{https://github.com/jerry40/guile-simple-zmq}
  1254. @end itemize
  1255. @end itemize
  1256. @end itemize
  1257. @node Network programming
  1258. @section Network programming
  1259. @itemize
  1260. @item
  1261. Guile's standard library networking module
  1262. @itemize
  1263. @item
  1264. GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/Networking.html}
  1265. @end itemize
  1266. @item
  1267. @code{guile-curl}
  1268. @itemize
  1269. @item
  1270. git repository at GitHub: @uref{https://github.com/spk121/guile-curl}
  1271. @end itemize
  1272. @item
  1273. @code{guile-ssh}
  1274. @itemize
  1275. @item
  1276. git repository at GitHub: @uref{https://github.com/artyom-poptsov/guile-ssh}
  1277. @end itemize
  1278. @item
  1279. GNU Serveez
  1280. @itemize
  1281. @item
  1282. GNU software page: @uref{https://www.gnu.org/software/serveez/}
  1283. @item
  1284. manual: @uref{https://www.gnu.org/software/serveez/manual/}
  1285. @item
  1286. git repository at Savannah: @uref{http://savannah.gnu.org/projects/serveez/}
  1287. @end itemize
  1288. @item
  1289. @code{serveez-mg}
  1290. @itemize
  1291. @item
  1292. git repository at GitHub @uref{https://github.com/spk121/serveez-mg}
  1293. @item
  1294. based on GNU Serveez
  1295. @end itemize
  1296. @end itemize
  1297. @node Parallelism
  1298. @section Parallelism
  1299. @itemize
  1300. @item
  1301. standard library futures
  1302. @itemize
  1303. @item
  1304. GNU software manual page: @uref{https://www.gnu.org/software/guile/docs/docs-2.2/guile-ref/Futures.html} (link to Guile 2.2 docs -- Where are the 3.x docs?)
  1305. @item
  1306. description:
  1307. @quotation
  1308. [@dots{}] a construct for fine-grain parallelism. A future is a wrapper around an expression whose computation may occur in parallel with the code of the calling thread, and possibly in parallel with other futures. Like promises, futures are essentially proxies that can be queried to obtain the value of the enclosed expression [@dots{}]
  1309. @end quotation
  1310. @end itemize
  1311. @item
  1312. @code{guile-fibers}
  1313. @itemize
  1314. @item
  1315. git repo: @uref{https://github.com/wingo/fibers}
  1316. @item
  1317. description:
  1318. @quotation
  1319. Concurrent ML-like concurrency for Guile
  1320. @end quotation
  1321. @end itemize
  1322. @item
  1323. standard library parallel forms
  1324. @itemize
  1325. @item
  1326. GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/Parallel-Forms.html}
  1327. @item
  1328. note: Sometimes the parallel forms might cause errors, see @uref{https://lists.gnu.org/archive/html/guile-user/2020-01/msg00092.html}, I recommend to use futures or if suitable @code{guile-fibers} instead.
  1329. @end itemize
  1330. @end itemize
  1331. @node Parsing
  1332. @section Parsing
  1333. @menu
  1334. * Parser Combinators::
  1335. * Parser Generator::
  1336. * Other: Other (4).
  1337. @end menu
  1338. @node Parser Combinators
  1339. @subsection Parser Combinators
  1340. @itemize
  1341. @item
  1342. @code{stis-parser}
  1343. @itemize
  1344. @item
  1345. git repository at GitLab: @uref{https://gitlab.com/tampe/stis-parser}
  1346. @end itemize
  1347. @end itemize
  1348. @node Parser Generator
  1349. @subsection Parser Generator
  1350. @itemize
  1351. @item
  1352. @code{nyacc}: Not Yet Another Compiler Compiler
  1353. @itemize
  1354. @item
  1355. git repository at Savannah: @uref{https://savannah.nongnu.org/projects/nyacc}
  1356. @item
  1357. documentation: @uref{https://www.nongnu.org/nyacc/nyacc-ug.html}
  1358. @end itemize
  1359. @end itemize
  1360. @node Other (4)
  1361. @subsection Other
  1362. @itemize
  1363. @item
  1364. standard library PEG parsing
  1365. @itemize
  1366. @item
  1367. GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/PEG-Parsing.html}
  1368. @item
  1369. description:
  1370. @quotation
  1371. Parsing Expression Grammars (PEGs) are a way of specifying formal languages for text processing.
  1372. (@uref{https://www.gnu.org/software/guile/manual/html_node/PEG-Parsing.html})
  1373. @end quotation
  1374. @end itemize
  1375. @end itemize
  1376. @node Plotting
  1377. @section Plotting
  1378. @itemize
  1379. @item
  1380. @code{guile-plotutils}
  1381. @itemize
  1382. @item
  1383. git repository at GitHub: @uref{https://github.com/spk121/guile-plotutils}
  1384. @item
  1385. website: @uref{https://www.gnu.org/software/plotutils/plotutils.html}
  1386. @end itemize
  1387. @end itemize
  1388. @node Protocols
  1389. @section Protocols
  1390. @itemize
  1391. @item
  1392. X protocol
  1393. @itemize
  1394. @item
  1395. @code{guile-xcb}
  1396. @itemize
  1397. @item
  1398. git repo: @uref{https://github.com/mwitmer/guile-xcb}
  1399. @end itemize
  1400. @end itemize
  1401. @end itemize
  1402. @node Serialization formats
  1403. @section Serialization formats
  1404. @itemize
  1405. @item
  1406. @code{guile-msgpack}
  1407. @itemize
  1408. @item
  1409. git repo: @uref{https://gitlab.com/HiPhish/guile-msgpack}
  1410. @item
  1411. description:
  1412. @quotation
  1413. This is a GNU Guile library implementing the MessagePack data serialisation format. It allows you to serialise (pack) and de-serialise (unpack) Scheme objects to and from binary data according to the MessagePack format.
  1414. (@uref{https://gitlab.com/HiPhish/guile-msgpack/-/blob/master/README.rst})
  1415. @end quotation
  1416. @end itemize
  1417. @end itemize
  1418. @node SRFI (Scheme Request For Implementation) implementations
  1419. @section SRFI (Scheme Request For Implementation) implementations
  1420. @itemize
  1421. @item
  1422. @code{TaylanUB/scheme-srfis}
  1423. @itemize
  1424. @item
  1425. git repo: @uref{https://github.com/TaylanUB/scheme-srfis}
  1426. @item
  1427. description: This repository contains implementations for some SRFIs.
  1428. @end itemize
  1429. @end itemize
  1430. @node Strings
  1431. @section Strings
  1432. @itemize
  1433. @item
  1434. @code{guile-raw-strings}
  1435. @itemize
  1436. @item
  1437. git repo: @uref{https://github.com/lloda/guile-raw-strings}
  1438. @end itemize
  1439. @end itemize
  1440. @node Regular expressions
  1441. @section Regular expressions
  1442. @itemize
  1443. @item
  1444. IrRegular Expressions (Scheme, R[4567]RS)
  1445. @itemize
  1446. @item
  1447. website: @uref{http://synthcode.com/scheme/irregex}
  1448. @end itemize
  1449. @end itemize
  1450. @node REPL (Read Eval Print Loop)
  1451. @section REPL (Read Eval Print Loop)
  1452. @itemize
  1453. @item
  1454. @code{guile-colorized}
  1455. @itemize
  1456. @item
  1457. git repository at GitLab: @uref{https://gitlab.com/NalaGinrut/guile-colorized}
  1458. @end itemize
  1459. @end itemize
  1460. @node RPC (Remote Procedure Call)
  1461. @section RPC (Remote Procedure Call)
  1462. @itemize
  1463. @item
  1464. GNU Guile-RPC
  1465. @itemize
  1466. @item
  1467. website: @uref{https://www.gnu.org/software/guile-rpc/}
  1468. @item
  1469. documentation: @uref{https://www.gnu.org/software/guile-rpc/manual/}
  1470. @item
  1471. git repo: @uref{http://git.savannah.gnu.org/gitweb/?p=guile-rpc.git}
  1472. @end itemize
  1473. @item
  1474. @code{guile-xmlrpc}:
  1475. @itemize
  1476. @item
  1477. description:
  1478. @quotation
  1479. guile-xmlrpc is an XMLRPC module for Guile. Guile already has the wonderful sxml module that allows XML document creation and parsing. guile-xmlrpc goes one step further and combines sxml with some macros and procedures that simplifies even more the creation and parsing of XMLRPC documents.
  1480. (@uref{https://github.com/aconchillo/guile-xmlrpc/blob/master/README.org})
  1481. @end quotation
  1482. @item
  1483. git repo: @uref{https://github.com/aconchillo/guile-xmlrpc}
  1484. @item
  1485. manual: (readme file in git repo)
  1486. @end itemize
  1487. @end itemize
  1488. @node Scientific computing and mathematics
  1489. @section Scientific computing and mathematics
  1490. @itemize
  1491. @item
  1492. GNU Scientific Library (GSL)
  1493. @itemize
  1494. @item
  1495. GNU software page @uref{https://www.gnu.org/software/gsl/}
  1496. @item
  1497. git repository at Savannah: @uref{http://savannah.gnu.org/projects/gsl/}
  1498. @item
  1499. wikipedia page: @uref{https://en.wikipedia.org/wiki/GNU_Scientific_Library}
  1500. @item
  1501. Guile bindings: @uref{http://community.schemewiki.org/?gee-guile-gsl}
  1502. @end itemize
  1503. @item
  1504. Matrix multiplication
  1505. @itemize
  1506. @item
  1507. @code{guile-ffi-cblas}
  1508. @itemize
  1509. @item
  1510. git repository at GitHub: @uref{https://github.com/lloda/guile-ffi-cblas}
  1511. @end itemize
  1512. @end itemize
  1513. @item
  1514. Fast Fourier Transformation
  1515. @itemize
  1516. @item
  1517. @code{guile-ffi-fftw} by lloda
  1518. @itemize
  1519. @item
  1520. git repo: @uref{https://github.com/lloda/guile-ffi-fftw}
  1521. @item
  1522. description: @emph{"A simple wrapper for FFTW, using Guile's FFI"} (@uref{https://github.com/lloda/guile-ffi-fftw})
  1523. @end itemize
  1524. @item
  1525. @code{guile-ffi-fftw} by Mikael Djurfeldt
  1526. @itemize
  1527. @item
  1528. git repo at Savannah: @uref{https://savannah.nongnu.org/projects/guile-fftw}
  1529. @item
  1530. description:
  1531. @end itemize
  1532. @end itemize
  1533. @item
  1534. Symbolic mathematics
  1535. @itemize
  1536. @item
  1537. @code{guile-scmutils}
  1538. @itemize
  1539. @item
  1540. website: @uref{https://www.cs.rochester.edu/~gildea/guile-scmutils/}
  1541. @item
  1542. download: @uref{https://www.cs.rochester.edu/~gildea/guile-scmutils/guile-scmutils-v1.0.tgz}
  1543. @item
  1544. description:
  1545. @quotation
  1546. A port of the scmutils package for symbolic mathematics from mit scheme to guile, in an effort to make scmutils and the examples from the Structure and Interpretation of Classical Mechanics available on a wider variety of architectures/operating systems.
  1547. (@uref{https://www.cs.rochester.edu/~gildea/guile-scmutils/})
  1548. @end quotation
  1549. @end itemize
  1550. @end itemize
  1551. @item
  1552. Guile implementation of symbolic mathematics shown in SICP
  1553. @itemize
  1554. @item
  1555. Does this exist?
  1556. @end itemize
  1557. @end itemize
  1558. @menu
  1559. * Interaction with the Jupyter ecosystem::
  1560. @end menu
  1561. @node Interaction with the Jupyter ecosystem
  1562. @subsection Interaction with the Jupyter ecosystem
  1563. @itemize
  1564. @item
  1565. @code{guix-kernel}
  1566. @itemize
  1567. @item
  1568. git repository at gitlab.inria.fr: @uref{https://gitlab.inria.fr/guix-hpc/guix-kernel}
  1569. @item
  1570. blog post: @uref{https://hpc.guix.info/blog/2019/10/towards-reproducible-jupyter-notebooks/}
  1571. @end itemize
  1572. @item
  1573. @code{guile-kernel}
  1574. @itemize
  1575. @item
  1576. git repository at GitHub: @uref{https://github.com/jerry40/guile-kernel}
  1577. @end itemize
  1578. @end itemize
  1579. @node Search engine
  1580. @section Search engine
  1581. @itemize
  1582. @item
  1583. @code{babelia}
  1584. @itemize
  1585. @item
  1586. git repo: @uref{https://github.com/amirouche/babelia}
  1587. @item
  1588. description:
  1589. @quotation
  1590. Wanna be search engine with federation support
  1591. (@uref{https://github.com/amirouche/babelia})
  1592. @end quotation
  1593. @end itemize
  1594. @end itemize
  1595. @node TUI development
  1596. @section TUI development
  1597. @itemize
  1598. @item
  1599. @code{guile-ncurses}
  1600. @itemize
  1601. @item
  1602. GNU software page: @uref{https://www.gnu.org/software/guile-ncurses/}
  1603. @item
  1604. git repository at GitHub: @uref{https://github.com/guildhall/guile-ncurses}
  1605. @end itemize
  1606. @end itemize
  1607. @node Unit Testing
  1608. @section Unit Testing
  1609. @itemize
  1610. @item
  1611. SRFI-64 (@uref{https://srfi.schemers.org/srfi-64/srfi-64.html})
  1612. @itemize
  1613. @item
  1614. GNU software Guile manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/SRFI_002d64.html}
  1615. @end itemize
  1616. @item
  1617. @code{srfi-64-driver}
  1618. @itemize
  1619. @item
  1620. git repository at: ???
  1621. @item
  1622. website: @uref{https://ngyro.com/software/srfi-64-driver.html}
  1623. @end itemize
  1624. @item
  1625. @code{guile-testing}
  1626. @itemize
  1627. @item
  1628. git repository at: @uref{https://github.com/wedesoft/guile-testing}
  1629. @item
  1630. description: @emph{"This is an example on how to do unit-testing using GNU Guile, Automake Test Anything Protocol (TAP), and SRFI-64."} (@uref{https://github.com/wedesoft/guile-testing/blob/598768b04fe9ef13e07401f1bd715f5fb3bb964e/README.md})
  1631. @end itemize
  1632. @end itemize
  1633. @menu
  1634. * TAP output::
  1635. @end menu
  1636. @node TAP output
  1637. @subsection TAP output
  1638. @itemize
  1639. @item
  1640. @code{guile-tap}
  1641. @itemize
  1642. @item
  1643. git repo: @uref{https://github.com/xevz/guile-tap}
  1644. @item
  1645. description: @emph{"Simple Guile module which provides TAP compilant output."} (@uref{https://github.com/xevz/guile-tap})
  1646. @end itemize
  1647. @item
  1648. @code{scm-test-tap}
  1649. @itemize
  1650. @item
  1651. git repo: @uref{https://github.com/ft/scm-test-tap}
  1652. @item
  1653. description: @emph{"TAP emitting test-framework for GNU Guile"} (@uref{https://github.com/ft/scm-test-tap})
  1654. @end itemize
  1655. @end itemize
  1656. @node Version control systems
  1657. @section Version control systems
  1658. @itemize
  1659. @item
  1660. @code{guile-git}
  1661. @itemize
  1662. @item
  1663. git repository at GitLab: @uref{https://gitlab.com/guile-git/guile-git}
  1664. @end itemize
  1665. @item
  1666. @code{guile-semver}
  1667. @itemize
  1668. @item
  1669. git repository at ngyro: @uref{https://git.ngyro.com/guile-semver}
  1670. @item
  1671. website at: @uref{https://ngyro.com/software/guile-semver.html}
  1672. @end itemize
  1673. @end itemize
  1674. @node Web Development
  1675. @section Web Development
  1676. @menu
  1677. * Web frameworks::
  1678. * Tooling / Additional libraries::
  1679. * Static website generators::
  1680. * Template engine::
  1681. * Interaction with services::
  1682. * Web application examples::
  1683. * Web drivers / Selenium::
  1684. @end menu
  1685. @node Web frameworks
  1686. @subsection Web frameworks
  1687. @itemize
  1688. @item
  1689. Guile's standard library's web module for dealing with web stuff:
  1690. @itemize
  1691. @item
  1692. GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/Web.html}
  1693. @end itemize
  1694. @item
  1695. Guile's standard library's web server:
  1696. @itemize
  1697. @item
  1698. GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/Web-Server.html}
  1699. @item
  1700. 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}
  1701. @item
  1702. documentation as generic interface for web server implementations: @uref{https://www.gnu.org/software/guile/manual/html_node/Web-Server.html}
  1703. @item
  1704. examples for usage for creating a web app: @uref{https://www.gnu.org/software/guile/manual/html_node/Web-Examples.html#Web-Examples}
  1705. @end itemize
  1706. @item
  1707. GNU Artanis web application frameweork
  1708. @itemize
  1709. @item
  1710. GNU software page: @uref{https://www.gnu.org/software/artanis/}
  1711. @item
  1712. git repository at GitLab: @uref{https://gitlab.com/NalaGinrut/artanis}
  1713. @item
  1714. official website of the GNU Artanis project: @uref{https://web-artanis.com/}
  1715. @item
  1716. blog post about GNU Artanis: @uref{https://dev.to/heroku/an-ode-to-gnu-artanis-2gn3}
  1717. @item
  1718. manual:
  1719. @itemize
  1720. @item
  1721. @uref{https://www.gnu.org/software/artanis/manual/manual.html}
  1722. @item
  1723. @uref{https://www.gnu.org/software/artanis/manual/html_node/}
  1724. @end itemize
  1725. @item
  1726. blog post about using GNU Artanis in a docker container: @uref{https://nalaginrut.com/archives/2019/09/18/install%20gnu%20artanis%20with%20docker}
  1727. @end itemize
  1728. @item
  1729. SPH web app
  1730. @itemize
  1731. @item
  1732. git repository at GitHub: @uref{https://github.com/sph-mn/sph-web-app}
  1733. @end itemize
  1734. @item
  1735. tekuti
  1736. @itemize
  1737. @item
  1738. 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?
  1739. @item
  1740. blog post about tekuti: @uref{https://wingolog.org/projects/tekuti/}
  1741. @end itemize
  1742. @end itemize
  1743. @node Tooling / Additional libraries
  1744. @subsection Tooling / Additional libraries
  1745. @itemize
  1746. @item
  1747. JSON
  1748. @itemize
  1749. @item
  1750. @code{guile-json}
  1751. @itemize
  1752. @item
  1753. on GitHub: @uref{https://github.com/aconchillo/guile-json}
  1754. @item
  1755. on savannah: @uref{http://savannah.nongnu.org/projects/guile-json/}
  1756. @end itemize
  1757. @end itemize
  1758. @item
  1759. @code{guile-www}
  1760. @itemize
  1761. @item
  1762. git repository at savannah non-gnu: @uref{http://savannah.nongnu.org/projects/guile-www/}
  1763. @end itemize
  1764. @item
  1765. @code{guile-webutils}
  1766. @itemize
  1767. @item
  1768. git repository at notabug.org: @uref{https://notabug.org/cwebber/guile-webutils}
  1769. @end itemize
  1770. @item
  1771. @code{guile-html}
  1772. @itemize
  1773. @item
  1774. git repo: @uref{https://github.com/TaylanUB/guile-html}
  1775. @item
  1776. description:
  1777. @quotation
  1778. A tiny module to make it less annoying to make and write HTML files using SXML@. Read the code!
  1779. @end quotation
  1780. @end itemize
  1781. @end itemize
  1782. @enumerate
  1783. @item
  1784. Authorization and authentication
  1785. @itemize
  1786. @item
  1787. @code{guile-oauth}
  1788. @itemize
  1789. @item
  1790. git repository at GitHub: @uref{https://github.com/aconchillo/guile-oauth}
  1791. @end itemize
  1792. @item
  1793. @code{guile-jwt}
  1794. @itemize
  1795. @item
  1796. git repository on GitHub: @uref{https://github.com/aconchillo/guile-jwt}
  1797. @end itemize
  1798. @end itemize
  1799. @end enumerate
  1800. @node Static website generators
  1801. @subsection Static website generators
  1802. @itemize
  1803. @item
  1804. @code{guile-haunt}
  1805. @itemize
  1806. @item
  1807. git repository at GitHub: @uref{https://github.com/guildhall/guile-haunt}
  1808. @end itemize
  1809. @item
  1810. SPH static website generator
  1811. @itemize
  1812. @item
  1813. git repository at GitHub: @uref{https://github.com/sph-mn/sph-web-publish}
  1814. @end itemize
  1815. @end itemize
  1816. @node Template engine
  1817. @subsection Template engine
  1818. @itemize
  1819. @item
  1820. Guile's standard library SXML implementation
  1821. @itemize
  1822. @item
  1823. GNU software manual: @uref{https://www.gnu.org/software/guile/manual/html_node/SXML.html}
  1824. @item
  1825. Basically your templates become functions or macros.
  1826. @item
  1827. The structure of your document is kept as Scheme data structures.
  1828. @itemize
  1829. @item
  1830. This avoids having parse the document as a long string into an internal data structure to perform semantic transformations.
  1831. @item
  1832. It enables pattern matching without resorting to things like regular expressions and similar shenanigans.
  1833. @end itemize
  1834. @end itemize
  1835. @end itemize
  1836. @node Interaction with services
  1837. @subsection Interaction with services
  1838. @itemize
  1839. @item
  1840. @code{guile-mastodon}
  1841. @itemize
  1842. @item
  1843. git repository at framagit: @uref{https://framagit.org/prouby/guile-mastodon}
  1844. @item
  1845. documentation at: @uref{https://framagit.org/prouby/guile-mastodon/-/blob/master/doc/guile-mastodon.org}
  1846. @end itemize
  1847. @end itemize
  1848. @node Web application examples
  1849. @subsection Web application examples
  1850. @itemize
  1851. @item
  1852. @code{scheme-todomvc}:
  1853. @itemize
  1854. @item
  1855. git repo: @uref{https://github.com/amirouche/scheme-todomvc}
  1856. @item
  1857. demo: @uref{https://amirouche.github.io/scheme-todomvc/}
  1858. @end itemize
  1859. @end itemize
  1860. @node Web drivers / Selenium
  1861. @subsection Web drivers / Selenium
  1862. @itemize
  1863. @item
  1864. @code{guile-web-driver}
  1865. @itemize
  1866. @item
  1867. git repo: @uref{https://github.com/her01n/guile-web-driver}
  1868. @item
  1869. description: "web driver (selenium) client for guile" (@uref{https://github.com/her01n/guile-web-driver})
  1870. @end itemize
  1871. @end itemize
  1872. @node Window manager
  1873. @section Window manager
  1874. @itemize
  1875. @item
  1876. @code{guile-wm}
  1877. @itemize
  1878. @item
  1879. git repo: @uref{https://github.com/mwitmer/guile-wm}
  1880. @end itemize
  1881. @end itemize
  1882. @node Working with code
  1883. @section Working with code
  1884. @itemize
  1885. @item
  1886. @code{guile-syntax-highlight}
  1887. @itemize
  1888. @item
  1889. website: @uref{https://dthompson.us/projects/guile-syntax-highlight.html}
  1890. @item
  1891. repository: seems to be missing
  1892. @end itemize
  1893. @end itemize
  1894. @node Other
  1895. @section Other
  1896. @itemize
  1897. @item
  1898. @code{guile-lib}
  1899. @itemize
  1900. @item
  1901. git repository at non-GNU Savannah: @uref{http://git.savannah.nongnu.org/cgit/guile-lib.git}
  1902. @item
  1903. website at: @uref{https://www.nongnu.org/guile-lib/}
  1904. @item
  1905. description:
  1906. @quotation
  1907. guile-lib is intended as an accumulation place for pure-scheme Guile modules, allowing for people to cooperate integrating their generic Guile modules into a coherent library. Think "a down-scaled, limited-scope CPAN for Guile". [@dots{}]
  1908. (@uref{https://www.nongnu.org/guile-lib/})
  1909. @end quotation
  1910. @end itemize
  1911. @item
  1912. Spells
  1913. @itemize
  1914. @item
  1915. git repo: @uref{https://github.com/rotty/spells}
  1916. @item
  1917. description:
  1918. @quotation
  1919. Spells is a collection of R6RS libraries providing features beyond R6RS in a uniform way across supported implementations.
  1920. (@uref{https://github.com/rotty/spells/blob/master/README})
  1921. @end quotation
  1922. @item
  1923. documentation: @uref{http://rotty.xx.vu/software/spells/} (unfortunately 404 currently)
  1924. @end itemize
  1925. @item
  1926. SPH website:
  1927. @itemize
  1928. @item
  1929. It has some Guile library and project descriptions and links.
  1930. @item
  1931. @uref{http://sph.mn/}
  1932. @end itemize
  1933. @end itemize
  1934. @node Projects
  1935. @chapter Projects
  1936. @itemize
  1937. @item
  1938. Guile 100
  1939. @itemize
  1940. @item
  1941. description:
  1942. @quotation
  1943. This is the repository for the Guile 100 Programs project. This is a collaborative effort to create a set of examples on how Guile might be used for real-world problems.
  1944. (@uref{https://github.com/spk121/guile100/blob/master/README.md})
  1945. @end quotation
  1946. @item
  1947. git repo: @uref{https://github.com/spk121/guile100/}
  1948. @item
  1949. website: @uref{http://www.lonelycactus.com/guile100/html/index.html}
  1950. @end itemize
  1951. @end itemize
  1952. @node Programming paradigm
  1953. @chapter Programming paradigm
  1954. @menu
  1955. * "Object-oriented programming"::
  1956. * Relational programming::
  1957. * Functional programming::
  1958. @end menu
  1959. @node "Object-oriented programming"
  1960. @section "Object-oriented programming"
  1961. @itemize
  1962. @item
  1963. GOOPS
  1964. @itemize
  1965. @item
  1966. GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/GOOPS.html}
  1967. @end itemize
  1968. @end itemize
  1969. @menu
  1970. * Prototype based::
  1971. @end menu
  1972. @node Prototype based
  1973. @subsection Prototype based
  1974. @itemize
  1975. @item
  1976. Shelf
  1977. @itemize
  1978. @item
  1979. git repo: @uref{https://github.com/mwitmer/Shelf}
  1980. @end itemize
  1981. @end itemize
  1982. @node Relational programming
  1983. @section Relational programming
  1984. @itemize
  1985. @item
  1986. @code{minikanren}
  1987. @itemize
  1988. @item
  1989. git repository at GitHub: @uref{https://github.com/ijp/minikanren}
  1990. @item
  1991. 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}
  1992. @end itemize
  1993. @end itemize
  1994. @node Functional programming
  1995. @section Functional programming
  1996. @itemize
  1997. @item
  1998. Monad implementations
  1999. @itemize
  2000. @item
  2001. git repository at GitHub: @uref{https://github.com/ijp/monad}
  2002. @end itemize
  2003. @end itemize
  2004. @node Tools
  2005. @chapter Tools
  2006. @menu
  2007. * Editor support::
  2008. * Project management::
  2009. @end menu
  2010. @node Editor support
  2011. @section Editor support
  2012. @itemize
  2013. @item
  2014. @code{guile.vim}
  2015. @itemize
  2016. @item
  2017. git repo: @uref{https://gitlab.com/HiPhish/guile.vim}
  2018. @item
  2019. description:
  2020. @quotation
  2021. This plugin extends Vim's Scheme support to include the additions to the language provided by the GNU Guile implementation. The plugin automatically detects whether a Scheme file is a Guile file and adds syntax highlighting for Guile's special forms.
  2022. (@uref{https://gitlab.com/HiPhish/guile.vim/-/blob/master/README.rst})
  2023. @end quotation
  2024. @end itemize
  2025. @item
  2026. @code{repl.nvim}
  2027. @itemize
  2028. @item
  2029. git repo: @uref{https://gitlab.com/HiPhish/repl.nvim/}
  2030. @item
  2031. description:
  2032. @quotation
  2033. REPL.nvim bring REPL support to Nvim! Use the built-in REPLs, add your own, or change the existing ones. Change settings in your init.vim or on the fly, make them global or local, use the existing ones or make your own.
  2034. (@uref{https://gitlab.com/HiPhish/repl.nvim/-/blob/master/README.rst})
  2035. @end quotation
  2036. @end itemize
  2037. @item
  2038. TODO: Emacs Guile support
  2039. @item
  2040. TODO: other editors support
  2041. @end itemize
  2042. @node Project management
  2043. @section Project management
  2044. @itemize
  2045. @item
  2046. @code{guile-hall}
  2047. @itemize
  2048. @item
  2049. git repository at GitLab: @uref{https://gitlab.com/a-sassmannshausen/guile-hall}
  2050. @end itemize
  2051. @item
  2052. @code{homebrew-guile}: @uref{https://github.com/aconchillo/}
  2053. @item
  2054. @code{guile-debbugs}
  2055. @itemize
  2056. @item
  2057. git repo: @uref{http://savannah.gnu.org/git/?group=guile-debbugs}
  2058. @item
  2059. description: see @uref{http://git.savannah.nongnu.org/cgit/guile-debbugs.git/tree/README.org}
  2060. @end itemize
  2061. @end itemize
  2062. @menu
  2063. * Package managers::
  2064. @end menu
  2065. @node Package managers
  2066. @subsection Package managers
  2067. @itemize
  2068. @item
  2069. GUIX package search
  2070. @itemize
  2071. @item
  2072. website: @uref{https://hpc.guix.info/browse}
  2073. @item
  2074. Search for example for @code{^guile-} to find many Guile libraries and projects.
  2075. @end itemize
  2076. @item
  2077. @code{guildhall}
  2078. @itemize
  2079. @item
  2080. git repository at GitHub: @uref{https://github.com/ijp/guildhall}
  2081. @end itemize
  2082. @item
  2083. Akku
  2084. @itemize
  2085. @item
  2086. website: @uref{https://akkuscm.org/}
  2087. @item
  2088. description:
  2089. @quotation
  2090. Akku.scm is a language package manager for Scheme. It grabs hold of code and vigorously shakes it until it behaves properly.
  2091. (@uref{https://akkuscm.org/})
  2092. @end quotation
  2093. @end itemize
  2094. @end itemize
  2095. @node Blogs
  2096. @chapter Blogs
  2097. @itemize
  2098. @item
  2099. @uref{https://hyper.dev/}
  2100. @item
  2101. @uref{http://wingolog.org/}
  2102. @item
  2103. @uref{http://okmij.org/ftp/Scheme/}
  2104. @item
  2105. blog post about singletons in GNU Guile
  2106. @itemize
  2107. @item
  2108. website: @uref{http://hiphish.github.io/blog/2019/05/24/singleton-objects-in-guile-scheme/}
  2109. @end itemize
  2110. @end itemize
  2111. @node Other (5)
  2112. @chapter Other
  2113. @itemize
  2114. @item
  2115. SPH lib, collection of Guile libraries
  2116. @itemize
  2117. @item
  2118. website: @uref{http://sph.mn/computer/software/sph-lib.html}
  2119. @end itemize
  2120. @item
  2121. C2 Wiki Category Scheme
  2122. @itemize
  2123. @item
  2124. website: @uref{https://proxy.c2.com/cgi/wiki?CategoryScheme}
  2125. @end itemize
  2126. @item
  2127. C2 Wiki Guile Scheme
  2128. @itemize
  2129. @item
  2130. website: @uref{https://proxy.c2.com/cgi/wiki?GuileScheme}
  2131. @end itemize
  2132. @item
  2133. C2 Wiki Scheme Language
  2134. @itemize
  2135. @item
  2136. website: @uref{https://proxy.c2.com/cgi/wiki?SchemeLanguage}
  2137. @end itemize
  2138. @item
  2139. Community Scheme Wiki
  2140. @itemize
  2141. @item
  2142. general
  2143. @itemize
  2144. @item
  2145. website: @uref{http://community.schemewiki.org}
  2146. @end itemize
  2147. @item
  2148. Scheme FAQ
  2149. @itemize
  2150. @item
  2151. website: @uref{http://community.schemewiki.org/?scheme-faq-standards}
  2152. @end itemize
  2153. @end itemize
  2154. @item
  2155. SICP solutions
  2156. @itemize
  2157. @item
  2158. git repo: @uref{https://github.com/alpardal/SICP-guile}
  2159. @item
  2160. description:
  2161. @quotation
  2162. A SICP Study Guide With Exercise Solutions in Guile & Emacs Lisp
  2163. (@uref{https://github.com/alpardal/SICP-guile})
  2164. @end quotation
  2165. @end itemize
  2166. @end itemize
  2167. @node Other lists of Guile software
  2168. @chapter Other lists of Guile software
  2169. @itemize
  2170. @item
  2171. official GNU Guile website library list: @uref{https://www.gnu.org/software/guile/libraries/}
  2172. @item
  2173. SPH list: @uref{http://sph.mn/foreign/guile-software.html}
  2174. @end itemize
  2175. @node Videos / Talks / Presentations
  2176. @chapter Videos / Talks / Presentations
  2177. This category is still empty. Help filling it with interesting GNU Guile related videos, talks or presentations!
  2178. @bye