1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042 |
- \input texinfo @c -*- texinfo -*-
- @c %**start of header
- @setfilename list.info
- @settitle Guile Awesome List
- @documentencoding UTF-8
- @documentlanguage English
- @c %**end of header
- @finalout
- @titlepage
- @title Guile Awesome List
- @author Zelphir Kaltstahl (help & input from Guile community)
- @end titlepage
- @contents
- @ifnottex
- @node Top
- @top Guile Awesome List
- @end ifnottex
- @menu
- * Manuals::
- * Tutorials / Guides / Books::
- * Libraries::
- * Projects::
- * Programming paradigm::
- * Programming language concepts::
- * Programs::
- * Tools::
- * Blogs::
- * Other: Other (7).
- * Other lists of Guile software::
- * Videos / Talks / Presentations::
- @detailmenu
- --- The Detailed Node Listing ---
- Tutorials / Guides / Books
- * General GNU Guile / Scheme::
- * Macros::
- * Monads::
- * FFI - Foreign Function Interface::
- * GUI development::
- Macros
- * CK macros::
- Libraries
- * Async::
- * Audio::
- * Browser::
- * Bots::
- * Chat::
- * Compression::
- * Computer vision::
- * Configuration::
- * Cryptography::
- * Databases::
- * Data structures::
- * Debugging::
- * Decentralization::
- * Development environments::
- * Device management::
- * Distributed computing::
- * E-Mail::
- * Encodings::
- * Event loop::
- * FFI - Foreign Function Interface: FFI - Foreign Function Interface (1).
- * File formats::
- * File system::
- * Game development::
- * Games::
- * Generators::
- * Genomics::
- * Graphics::
- * GUI development: GUI development (1).
- * Language::
- * Logging::
- * Machine Learning::
- * Macros: Macros (1).
- * Message Queues::
- * Network programming::
- * Parallelism::
- * Parsing::
- * Plotting::
- * Protocols::
- * Serialization::
- * SRFI (Scheme Request For Implementation) implementations::
- * Strings::
- * Syntax::
- * Regular expressions::
- * REPL (Read Eval Print Loop)::
- * RPC (Remote Procedure Call)::
- * Scientific computing and mathematics::
- * Search engine::
- * Shell::
- * TUI development::
- * Testing::
- * Types::
- * Version control systems::
- * Web Development::
- * Window manager::
- * Working with code::
- * Other::
- * Unsorted::
- Chat
- * Chat clients::
- * Chat bots::
- * Protocols: Protocols (1).
- Databases
- * Generic::
- * Postgres::
- * Sqlite::
- * MySQL::
- * Redis::
- * CouchDB::
- * Other: Other (1).
- Data structures
- * Purely functional data structures (PFDs)::
- * RDF::
- * Lenses::
- * Trees::
- * Other: Other (2).
- File formats
- * JSON::
- * YAML::
- * CSV::
- * XML::
- * Markdown::
- * Texinfo::
- * JPEG::
- * PNG::
- * ICS::
- * torrent::
- * Shapefile::
- * CBOR::
- * TAR::
- * INI::
- * Other: Other (3).
- Graphics
- * Image processing::
- * Design and CAD::
- Parsing
- * Parser Combinators::
- * Parser Generator::
- * Other: Other (4).
- * XML parser::
- Scientific computing and mathematics
- * Interaction with the Jupyter ecosystem::
- Testing
- * Integration testing::
- * Unit testing::
- * Other: Other (5).
- Types
- * Static typing::
- Web Development
- * Web servers::
- * Web clients::
- * Web frameworks::
- * Protocols: Protocols (2).
- * Tooling / Additional libraries::
- * Static website generators::
- * Template engine::
- * Interaction with services::
- * Web application examples::
- * Web drivers / Selenium::
- Programming paradigm
- * "Object-oriented programming"::
- * Relational programming::
- * Functional programming::
- "Object-oriented programming"
- * Prototype based::
- Programming language concepts
- * Pipeline / pipe / chain / threading::
- * State Machines::
- Programs
- * Finances::
- * Window manager: Window manager (1).
- * Other: Other (6).
- Tools
- * Notes::
- * Editor support::
- * Project management::
- * Build tools::
- Project management
- * Package managers::
- * Time tracking::
- @end detailmenu
- @end menu
- @node Manuals
- @chapter Manuals
- @itemize
- @item
- There is a huge reference manual for GNU Guile on the GNU website: @uref{https://www.gnu.org/software/guile/manual/}.
- @end itemize
- @node Tutorials / Guides / Books
- @chapter Tutorials / Guides / Books
- @menu
- * General GNU Guile / Scheme::
- * Macros::
- * Monads::
- * FFI - Foreign Function Interface::
- * GUI development::
- @end menu
- @node General GNU Guile / Scheme
- @section General GNU Guile / Scheme
- @itemize
- @item
- Guile reference manual
- @itemize
- @item
- website: @uref{https://www.gnu.org/software/guile/manual/}
- @end itemize
- @item
- official Guile tutorial
- @itemize
- @item
- website: @uref{https://www.gnu.org/software/guile/docs/guile-tut/tutorial.html}
- @end itemize
- @item
- Structure and Interpretation of Computer Programs (SICP)
- @itemize
- @item
- website: @uref{https://mitpress.mit.edu/sites/default/files/sicp/index.html}
- @item
- PDF version: @uref{https://github.com/sarabander/sicp-pdf}
- @end itemize
- @item
- The Little Schemer
- @itemize
- @item
- website: @uref{https://mitpress.mit.edu/books/little-schemer-fourth-edition}
- @end itemize
- @item
- "Learn Scheme in 15 minutes"
- @itemize
- @item
- website: @uref{https://web-artanis.com/scheme.html}
- @end itemize
- @item
- guile-tutorial
- @itemize
- @item
- git repo: @uref{https://notabug.org/cwebber/guile-tutorial}
- @end itemize
- @item
- Guile Hacker Handbook
- @itemize
- @item
- website: @uref{https://jeko.frama.io/en/index.html}
- @item
- git repo: @uref{https://framagit.org/Jeko/jeko.frama.io}
- @end itemize
- @item
- The Scheme Programming Language
- @itemize
- @item
- web version: @uref{https://scheme.com/tspl4/}
- @end itemize
- @item
- A Pamphlet Against R
- @itemize
- @item
- PDF version: @uref{https://github.com/panicz/pamphlet/raw/master/pamphlet.pdf}
- @item
- source codes: @uref{https://github.com/panicz/pamphlet}
- @end itemize
- @item
- Concrete Abstractions - An Introduction to Computer Science Using Scheme
- @itemize
- @item
- web: @uref{https://gustavus.edu/mcs/max/concrete-abstractions-pdfs/index.html}
- @end itemize
- @end itemize
- @node Macros
- @section Macros
- @itemize
- @item
- Macros in the GNU Guile reference manual
- @itemize
- @item
- website: @uref{https://www.gnu.org/software/guile/manual/html_node/Macros.html}
- @end itemize
- @item
- Writing Hygienic Macros in Scheme with Syntax-Case
- @itemize
- @item
- article: @uref{https://doc.lagout.org/programmation/Lisp/Scheme/Programming%20With%20Hygienic%20Macros%20-%20R%20K%20Dybvig.pdf}
- @end itemize
- @item
- Community Scheme Wiki about macros
- @itemize
- @item
- scheme-faq-macros
- @itemize
- @item
- website: @uref{http://community.schemewiki.org/?scheme-faq-macros}
- @end itemize
- @item
- syntax-case
- @itemize
- @item
- website: @uref{http://community.schemewiki.org/?syntax-case}
- @end itemize
- @end itemize
- @item
- A Scheme Syntax-Rules Primer
- @itemize
- @item
- website: @uref{http://www.willdonnelly.net/blog/scheme-syntax-rules/}
- @end itemize
- @item
- Macro-by-Example: Deriving Syntactic Transformations from their Specifications
- @itemize
- @item
- paper: @uref{https://legacy.cs.indiana.edu/ftp/techreports/TR206.pdf}
- @end itemize
- @item
- wikibooks.org about macros
- @itemize
- @item
- website: @uref{https://en.wikibooks.org/wiki/Scheme_Programming/Macros}
- @end itemize
- @item
- Advanced Scheme Techniques - Some Naughty Bits
- @itemize
- @item
- slides: @uref{http://people.csail.mit.edu/jhbrown/scheme/macroslides04.pdf}
- @end itemize
- @item
- C2 Wiki Scheme Macro Examples
- @itemize
- @item
- website: @uref{http://wiki.c2.com/?SchemeMacroExamples}
- @end itemize
- @item
- JRM's Syntax-rules Primer for the Merely Eccentric
- @itemize
- @item
- website: @uref{https://hipster.home.xs4all.nl/lib/scheme/gauche/define-syntax-primer.txt}
- @itemize
- @item
- another location: @uref{http://www.phyast.pitt.edu/~micheles/syntax-rules.pdf}
- @end itemize
- @end itemize
- @item
- Scheme Macros I: Modules
- @itemize
- @item
- website: @uref{https://blog.veitheller.de/Scheme_Macros_I:_Modules.html}
- @end itemize
- @item
- Writing Macros in Continuation-Passing Style
- @itemize
- @item
- 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)
- @end itemize
- @item
- Low- and high-level macro programming in Scheme
- @itemize
- @item
- website: @uref{http://okmij.org/ftp/Scheme/macros.html}
- @end itemize
- @end itemize
- @menu
- * CK macros::
- @end menu
- @node CK macros
- @subsection CK macros
- @itemize
- @item
- Applicative syntax-rules: macros that compose better
- @itemize
- @item
- website: @uref{http://okmij.org/ftp/Scheme/macros.html#ck-macros}
- @end itemize
- @item
- Chicken Scheme Wiki about ck-macros
- @itemize
- @item
- website: @uref{http://wiki.call-cc.org/eggref/5/ck-macros}
- @end itemize
- @end itemize
- @node Monads
- @section Monads
- @itemize
- @item
- A Schemer's Introduction to Monads
- @itemize
- @item
- website: @uref{http://www.ccs.neu.edu/home/dherman/research/tutorials/monads-for-schemers.txt}
- @end itemize
- @item
- A Schemer’s View of Monads - Partial Draft
- @itemize
- @item
- website: @uref{https://cgi.sice.indiana.edu/~c311/lib/exe/fetch.php?media=manymonads.pdf}
- @end itemize
- @item
- Monadic Programming in Scheme
- @itemize
- @item
- website: @uref{http://okmij.org/ftp/Scheme/monad-in-Scheme.html}
- @end itemize
- @item
- Panicz Godek's answer to How would you explain a concept of monads to a non-CS person?
- @itemize
- @item
- website @uref{https://www.quora.com/How-would-you-explain-a-concept-of-monads-to-a-non-CS-person/answer/Panicz-Godek}
- @end itemize
- @item
- Panicz Godek's answer to @uref{https://www.quora.com/Why-do-so-many-programmers-not-understand-the-theory-of-monads/answer/Panicz-Godek}
- @itemize
- @item
- website @uref{https://www.quora.com/Why-do-so-many-programmers-not-understand-the-theory-of-monads/answer/Panicz-Godek}
- @end itemize
- @end itemize
- @node FFI - Foreign Function Interface
- @section FFI - Foreign Function Interface
- @itemize
- @item
- GNU Guile standard library FFI
- @itemize
- @item
- GNU software reference manual: @uref{https://www.gnu.org/software/guile/manual/html_node/Foreign-Function-Interface.html}
- @end itemize
- @end itemize
- @node GUI development
- @section GUI development
- @itemize
- @item
- @code{gtk-tutorial-using-guile-gnome}
- @itemize
- @item
- git repo: @uref{https://github.com/yang-qu/gtk-tutorial-using-guile-gnome}
- @item
- description: @emph{"This project converts C code in gtk tutorial @uref{http://www.zetcode.com/tutorials/gtktutorial}} to scheme code using guile-gnome."/ (@uref{https://github.com/yang-qu/gtk-tutorial-using-guile-gnome/blob/ec4e9ce9c670b923fc3cc973c1e85fc7934ff4d8/README})
- @end itemize
- @end itemize
- @node Libraries
- @chapter Libraries
- @menu
- * Async::
- * Audio::
- * Browser::
- * Bots::
- * Chat::
- * Compression::
- * Computer vision::
- * Configuration::
- * Cryptography::
- * Databases::
- * Data structures::
- * Debugging::
- * Decentralization::
- * Development environments::
- * Device management::
- * Distributed computing::
- * E-Mail::
- * Encodings::
- * Event loop::
- * FFI - Foreign Function Interface: FFI - Foreign Function Interface (1).
- * File formats::
- * File system::
- * Game development::
- * Games::
- * Generators::
- * Genomics::
- * Graphics::
- * GUI development: GUI development (1).
- * Language::
- * Logging::
- * Machine Learning::
- * Macros: Macros (1).
- * Message Queues::
- * Network programming::
- * Parallelism::
- * Parsing::
- * Plotting::
- * Protocols::
- * Serialization::
- * SRFI (Scheme Request For Implementation) implementations::
- * Strings::
- * Syntax::
- * Regular expressions::
- * REPL (Read Eval Print Loop)::
- * RPC (Remote Procedure Call)::
- * Scientific computing and mathematics::
- * Search engine::
- * Shell::
- * TUI development::
- * Testing::
- * Types::
- * Version control systems::
- * Web Development::
- * Window manager::
- * Working with code::
- * Other::
- * Unsorted::
- @end menu
- @node Async
- @section Async
- @itemize
- @item
- 8sync
- @itemize
- @item
- git repository at Savannah: @uref{https://savannah.gnu.org/projects/8sync}
- @item
- manual / GNU software manual: @uref{https://www.gnu.org/software/8sync/manual/html_node/index.html#Top}
- @item
- website / GNU software page: @uref{https://www.gnu.org/software/8sync/}
- @item
- tutorial: @uref{https://www.gnu.org/software/8sync/manual/html_node/Tutorial.html#Tutorial}
- @end itemize
- @end itemize
- @node Audio
- @section Audio
- @itemize
- @item
- @code{gapd}
- @itemize
- @item
- git repo: @uref{https://github.com/rashack/gapd}
- @item
- description: @emph{"Guile Audio Player Daemon"} (@uref{https://github.com/rashack/gapd})
- @end itemize
- @item
- @code{xmms2-guile}
- @itemize
- @item
- git repository: @uref{https://gitlab.com/ft/xmms2-guile}
- @item
- description: @emph{"Native XMMS2 client library for GNU Guile."} -- @uref{https://gitlab.com/ft/xmms2-guile} @@ @samp{b26d67cd2cb8100c17244c7bcf50b496e90c98ae}
- @end itemize
- @end itemize
- @node Browser
- @section Browser
- @itemize
- @item
- Nomad
- @itemize
- @item
- git repository at non-GNU Savannah: @uref{https://savannah.nongnu.org/projects/nomad/}
- @item
- website: @uref{https://www.nongnu.org/nomad/}
- @end itemize
- @end itemize
- @node Bots
- @section Bots
- @itemize
- @item
- @code{chatter}
- @itemize
- @item
- git repo: @uref{https://github.com/apg/chatter}
- @item
- description: @emph{"Chatter Bot framework, inspired by Elizabot, for Guile"} (@uref{https://github.com/apg/chatter/blob/e407b09e9aedb214e75ffaecbcc86ed105f154aa/README})
- @end itemize
- @end itemize
- @node Chat
- @section Chat
- @menu
- * Chat clients::
- * Chat bots::
- * Protocols: Protocols (1).
- @end menu
- @node Chat clients
- @subsection Chat clients
- @enumerate
- @item
- @anchor{IRC}IRC
- @itemize
- @item
- @code{guile-irc}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/rekado/guile-irc}
- @item
- description: @emph{"An irc library for GNU guile."} (@uref{https://github.com/rekado/guile-irc/blob/master/README})
- @item
- API reference manual: @uref{http://fbs.github.io/guile-irc/}
- @end itemize
- @end itemize
- @end enumerate
- @node Chat bots
- @subsection Chat bots
- @enumerate
- @item
- @anchor{IRC (1)}IRC
- @itemize
- @item
- Cunning Bot
- @itemize
- @item
- git repo: @uref{https://github.com/cadrspace/cunning-bot}
- @item
- description:
- @quotation
- Cunning Bot is a command-oriented IRC bot written in Guile Scheme.
- (@uref{https://github.com/cadrspace/cunning-bot/blob/cadrobot/README})
- @end quotation
- @end itemize
- @item
- @code{eliug}
- @itemize
- @item
- git repo: @uref{https://github.com/szdiy/eliug}
- @item
- description: @emph{"the smart irc bot written with GNU Guile-scheme"} (@uref{https://github.com/szdiy/eliug/blob/030bf891a4007e9c40f8fdacd306c77e71146334/README.md})
- @end itemize
- @end itemize
- @end enumerate
- @node Protocols (1)
- @subsection Protocols
- @enumerate
- @item
- @anchor{Matrix}Matrix
- @itemize
- @item
- @code{guile-deck}
- @itemize
- @item
- repository: @uref{https://github.com/artyom-poptsov/guile-deck}
- @item
- description: @emph{"GNU Guile SDK for the Matrix network (@uref{https://matrix.org})"} -- @uref{https://github.com/artyom-poptsov/guile-deck/blob/7df7512501fb9a6fe879fb95857dc172b5a8fc22/README, README file}
- @end itemize
- @end itemize
- @end enumerate
- @node Compression
- @section Compression
- @itemize
- @item
- @code{guile-zlib}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/davexunit/guile-zlib}
- @end itemize
- @item
- @code{guile-zstd}
- @itemize
- @item
- git repository at notabug.org: @uref{https://notabug.org/guile-zstd/guile-zstd}
- @item
- description: @emph{"GNU Guile bindings to the zstd compression library."} (@uref{https://notabug.org/guile-zstd/guile-zstd})
- @end itemize
- @end itemize
- @node Computer vision
- @section Computer vision
- @itemize
- @item
- GNU Guile-CV
- @itemize
- @item
- website: @uref{https://www.gnu.org/software/guile-cv/}
- @item
- GNU software reference manual: @uref{https://www.gnu.org/software/guile-cv/manual/html_node/index.html}
- @item
- description:
- @quotation
- Guile-CV - Image Processing and Analysis in Guile - is a Computer Vision functional programming library for the Guile Scheme language.
- 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@.
- 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.
- (@uref{https://www.gnu.org/software/guile-cv/index.html})
- @end quotation
- @end itemize
- @end itemize
- @node Configuration
- @section Configuration
- @itemize
- @item
- @code{guile-config}
- @itemize
- @item
- git repository at GitLab: @uref{https://gitlab.com/a-sassmannshausen/guile-config}
- @end itemize
- @end itemize
- @node Cryptography
- @section Cryptography
- @itemize
- @item
- @code{guile-gcrypt}
- @itemize
- @item
- git repo: @uref{https://notabug.org/cwebber/guile-gcrypt}
- @item
- description:
- @quotation
- Guile-Gcrypt provides a Guile 3.x/2.x interface to a subset of the GNU
- Libgcrypt crytographic library, which is itself used by the GNU Privacy Guard
- (GPG).
- Guile-Gcrypt provides modules for cryptographic hash functions, message
- authentication codes (MAC), public-key cryptography, strong randomness, and
- more. It is implemented using the foreign function interface (FFI) of Guile.
- @end quotation
- @end itemize
- @item
- @code{gcrypt-guile}
- @itemize
- @item
- git repo: @uref{https://github.com/fbs/gcrypt-guile} (archived, read only)
- @item
- description: @emph{"Wrappers to get some libgcrypt functionality into guile."} (@uref{https://github.com/fbs/gcrypt-guile/blob/0add93e2486044ca48f3de130a070fba21bf0b2d/README})
- @end itemize
- @end itemize
- @node Databases
- @section Databases
- @menu
- * Generic::
- * Postgres::
- * Sqlite::
- * MySQL::
- * Redis::
- * CouchDB::
- * Other: Other (1).
- @end menu
- @node Generic
- @subsection Generic
- @itemize
- @item
- Generic
- @itemize
- @item
- @code{guile-dbi}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/opencog/guile-dbi}
- @item
- documentation: @uref{https://htmlpreview.github.io/?https://github.com/opencog/guile-dbi/blob/master/website/guile-dbi.html}
- @item
- offers MySQL, Postgresql and SQLite3 interfaces
- @end itemize
- @end itemize
- @end itemize
- @node Postgres
- @subsection Postgres
- @itemize
- @item
- @code{guile-squee}
- @itemize
- @item
- git repository at notabug.org: @uref{https://notabug.org/cwebber/guile-squee}
- @item
- documentation at: ???
- @end itemize
- @item
- @code{guile-dbd-postgresql}
- @itemize
- @item
- git repository: @uref{https://github.com/opencog/guile-dbi/tree/master/guile-dbd-postgresql}
- @item
- documentation: @uref{https://github.com/opencog/guile-dbi/blob/master/guile-dbd-postgresql/README}
- @item
- description: This is a sub-repository of @code{guile-dbi} which is used for dealing with the Postgres side of things.
- @end itemize
- @item
- Guile-PG
- @itemize
- @item
- git repository: @uref{https://git.savannah.nongnu.org/cgit/guile-pg.git}
- @item
- documentation: ???
- @item
- project page: @uref{https://www.nongnu.org/guile-pg/}
- @item
- description: @emph{"Guile-PG is a collection of modules for Guile allowing access to the PostgreSQL RDBMS from Scheme programs."} (@uref{https://www.nongnu.org/guile-pg/})
- @end itemize
- @end itemize
- @node Sqlite
- @subsection Sqlite
- @itemize
- @item
- @code{guile-sqlite3}
- @itemize
- @item
- git repository at notabug.org: @uref{https://notabug.org/guile-sqlite3/guile-sqlite3.git}
- @item
- documentation at: ???
- @end itemize
- @item
- @code{guile-dbd-sqlite3}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/opencog/guile-dbi/tree/master/guile-dbd-sqlite3}
- @item
- documentation: @uref{https://github.com/opencog/guile-dbi/blob/master/guile-dbd-sqlite3/README}
- @item
- description: This is a sub-repository of @code{guile-dbi} which is used for dealing with the Sqlite3 side of things.
- @end itemize
- @end itemize
- @node MySQL
- @subsection MySQL
- @itemize
- @item
- @code{guile-dbd-mysql}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/opencog/guile-dbi/tree/master/guile-dbd-mysql}
- @item
- documentation: @uref{https://github.com/opencog/guile-dbi/blob/master/guile-dbd-mysql/README}
- @item
- description: This is a sub-repository of @code{guile-dbi} which is used for dealing with the MySQL side of things.
- @end itemize
- @end itemize
- @node Redis
- @subsection Redis
- @itemize
- @item
- @code{guile-redis}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/aconchillo/guile-redis}
- @end itemize
- @end itemize
- @node CouchDB
- @subsection CouchDB
- @itemize
- @item
- CouchDB
- @itemize
- @item
- @code{guile-couchdb}
- @item
- git repo: @uref{https://github.com/ukulanne/guile-couchdb}
- @item
- description: CouchDB bindings for Guile
- @end itemize
- @end itemize
- @node Other (1)
- @subsection Other
- @itemize
- @item
- WiredTiger (@uref{http://www.wiredtiger.com/}
- @itemize
- @item
- @code{guile-wiredtiger}
- @itemize
- @item
- blog post: @uref{https://hyper.dev/blog/getting-started-with-guile-wiredtiger.html}
- @item
- git repository at: ??? (framagit requires login?)
- @end itemize
- @end itemize
- @item
- @code{guile-sparql}: @uref{https://github.com/roelj/guile-sparql}
- @item
- @code{sparqling-genomics}: @uref{https://github.com/UMCUGenetics/sparqling-genomics}
- @item
- @code{nomunofu}
- @itemize
- @item
- mentioned on: @uref{https://hyper.dev/blog/nomunofu.html}
- @item
- git repo: ???
- @end itemize
- @item
- @code{gsparql}
- @itemize
- @item
- git repo: @uref{https://github.com/cordawyn/gsparql}
- @item
- description: @emph{"SPARQL client written in Guile"} (@uref{https://github.com/cordawyn/gsparql/blob/4076e435cc852a5c91922be5ffc7e201bb35d935/README.md})
- @end itemize
- @end itemize
- @node Data structures
- @section Data structures
- @menu
- * Purely functional data structures (PFDs)::
- * RDF::
- * Lenses::
- * Trees::
- * Other: Other (2).
- @end menu
- @node Purely functional data structures (PFDs)
- @subsection Purely functional data structures (PFDs)
- @itemize
- @item
- @code{pfds}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/ijp/pfds}
- @item
- description: @emph{"pfds is a set of purely functional data structures written in R6RS Scheme. It has been tested with Racket, Guile 2, Vicare Scheme and IronScheme."} (@uref{https://github.com/ijp/pfds/blob/454033f82dac7c0b0ea9e84eed1e8ed316487c78/README.org})
- @item
- documentation: @uref{https://github.com/ijp/pfds/blob/master/README.org}
- @end itemize
- @item
- @code{fectors}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/ijp/fectors}
- @itemize
- @item
- perhaps fork or original or another library: @uref{https://hg.sr.ht/~bjoli/guile-fector}
- @end itemize
- @end itemize
- @item
- @code{guile-fash}
- @itemize
- @item
- mercurial repo: @uref{https://hg.sr.ht/~bjoli/guile-fash}
- @item
- description: @emph{"guile-fash implements functional hashes using Hash array mapped tries (HAMTs)."} (@uref{https://hg.sr.ht/~bjoli/guile-fash/browse/readme.md?rev=tip})
- @item
- guix package: none
- @end itemize
- @end itemize
- @node RDF
- @subsection RDF
- @itemize
- @item
- @code{guile-rdf}
- @itemize
- @item
- git repository at framagit: @uref{https://framagit.org/tyreunom/guile-rdf}
- @end itemize
- @end itemize
- @node Lenses
- @subsection Lenses
- @itemize
- @item
- @code{guile-lens}
- @itemize
- @item
- git repository at GitLab: @uref{https://gitlab.com/a-sassmannshausen/guile-lens}
- @end itemize
- @end itemize
- @node Trees
- @subsection Trees
- @itemize
- @item
- Guile AA Tree
- @itemize
- @item
- project page: @uref{https://savannah.nongnu.org/projects/guile-aa-tree}
- @item
- git repo: @uref{https://git.savannah.nongnu.org/cgit/guile-aa-tree.git}
- @item
- description: @emph{"An AA tree implementation for scheme. AA trees are self-balancing binary trees, which ensure O(log n) worst case performance for core operations. The module provides non-mutating insert, delete, and search operations, with support for convenient nested tree operations."} (@uref{https://savannah.nongnu.org/projects/guile-aa-tree})
- @end itemize
- @end itemize
- @node Other (2)
- @subsection Other
- @itemize
- @item
- @code{copernic}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/amirouche/copernic}
- @end itemize
- @item
- @code{scheme-bytestructures}
- @itemize
- @item
- git repo: @uref{https://github.com/TaylanUB/scheme-bytestructures}
- @item
- description:
- @quotation
- [@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.
- @end quotation
- @end itemize
- @item
- @code{guile-newra}
- @itemize
- @item
- git repo: @uref{https://github.com/lloda/guile-newra}
- @item
- description: "A Scheme replacement for Guile's array system" (@uref{https://github.com/lloda/guile-newra})
- @end itemize
- @item
- Treaps
- @itemize
- @item
- website: @uref{http://okmij.org/ftp/Scheme/#treaps}
- @item
- description:
- @quotation
- 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.
- (@uref{http://okmij.org/ftp/Scheme/#treaps})
- @end quotation
- @end itemize
- @item
- @code{array-list}
- @itemize
- @item
- repository: @uref{https://git.dthompson.us/chickadee.git/tree/chickadee/array-list.scm}
- @item
- description: an implementation of a dynamic array (@uref{https://en.wikipedia.org/wiki/Dynamic_array})
- @end itemize
- @end itemize
- @node Debugging
- @section Debugging
- @itemize
- @item
- @code{guile-jtd}
- @itemize
- @item
- repository: @uref{https://github.com/mwette/guile-jtd}
- @item
- description:
- @quotation
- jump-to-debugger: like Python's pdb.set@math{_trace}(), but for Guile
- The `(jtd)` module for Guile provides a procedure (jump-to-debugger)
- for escaping to the Guile REPL for the purpose of debugging code.
- It should be considered beta code, still under development.
- -- @uref{https://raw.githubusercontent.com/mwette/guile-jtd/cb40b0e0f2fa2a1825a5f1f273b6970be2fe1401/README.md}
- @end quotation
- @item
- documentation: @uref{https://github.com/mwette/guile-jtd/blob/main/README.md}
- @end itemize
- @end itemize
- @node Decentralization
- @section Decentralization
- @itemize
- @item
- @code{wispwot}
- @itemize
- @item
- repository: @uref{https://hg.sr.ht/~arnebab/wispwot/browse}
- @item
- description:
- @quotation
- This implements the defense from the Freenet project against disruption of
- communication. It is created to experiment with ways to improve the scaling
- and performance.
- -- @uref{https://hg.sr.ht/~arnebab/wispwot}
- @end quotation
- @end itemize
- @end itemize
- @node Development environments
- @section Development environments
- @itemize
- @item
- @code{guile-studio}
- @itemize
- @item
- git repo: @uref{https://git.elephly.net/gitweb.cgi?p=software/guile-studio.git;a=tree}
- @item
- description:
- @quotation
- Racket has Dr Racket. Guile has @dots{} Emacs? This is Emacs with a few
- settings that make working with Guile easier for people new to Emacs.
- Features include: CUA mode, Geiser, tool bar icons to evaluate Guile
- buffers, support for Guile's very own picture language, code completion, a
- simple mode line, etc. [@dots{}]
- @end quotation
- (@uref{https://git.elephly.net/gitweb.cgi?p=software/guile-studio.git;a=blob;f=README.org;hb=HEAD})
- @end itemize
- @end itemize
- @node Device management
- @section Device management
- @itemize
- @item
- @code{guile-udev}:
- @itemize
- @item
- description: @emph{"Guile-Udev is a GNU Guile bindings to libudev."} (@uref{https://github.com/artyom-poptsov/guile-udev/blob/master/README})
- @item
- git repo: @uref{https://github.com/artyom-poptsov/guile-udev}
- @item
- documentation: (inside the git repo: @uref{https://github.com/artyom-poptsov/guile-udev/blob/master/doc/guile-udev.texi})
- @item
- examples: (inside the git repo: @uref{https://github.com/artyom-poptsov/guile-udev/tree/master/examples})
- @end itemize
- @end itemize
- @node Distributed computing
- @section Distributed computing
- @itemize
- @item
- @code{metabash}
- @itemize
- @item
- git repository: @uref{https://github.com/artyom-poptsov/metabash}
- @item
- description: @emph{"GNU Guile module for running distributed shell pipelines."} -- @uref{https://github.com/artyom-poptsov/metabash/blob/master/README.org}
- @end itemize
- @end itemize
- @node E-Mail
- @section E-Mail
- @itemize
- @item
- GNU Mailutils ??? (@uref{https://mailutils.org/})
- @item
- @code{guile-email}: @uref{https://guile-email.systemreboot.net/}
- @end itemize
- @node Encodings
- @section Encodings
- @itemize
- @item
- ERIS - Encoding for Robust Immutable Storage
- @itemize
- @item
- website: @uref{http://purl.org/eris}
- @item
- git repository: @uref{https://gitlab.com/openengiadina/eris/-/tree/main}
- @item
- description: @emph{"ERIS is an encoding for arbitrary content into uniformly sized encrypted blocks that can be reassembled only in possession of a short read capability."} -- @uref{https://gitlab.com/openengiadina/eris/-/blob/88c54329c1f7357941ae3a4bac49847c022c9803/README.org}
- @end itemize
- @end itemize
- @node Event loop
- @section Event loop
- @itemize
- @item
- @code{guile-a-sync}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/ChrisVine/guile-a-sync}
- @item
- documentation: ?
- @end itemize
- @end itemize
- @node FFI - Foreign Function Interface (1)
- @section FFI - Foreign Function Interface
- @itemize
- @item
- GNU Guile standard library FFI
- @itemize
- @item
- GNU software reference manual: @uref{https://www.gnu.org/software/guile/manual/html_node/Foreign-Function-Interface.html}
- @end itemize
- @item
- @code{ffi-helper} from NYACC
- @itemize
- @item
- documentation: @uref{https://www.nongnu.org/nyacc/ffi-help.html}
- @end itemize
- @end itemize
- @node File formats
- @section File formats
- @menu
- * JSON::
- * YAML::
- * CSV::
- * XML::
- * Markdown::
- * Texinfo::
- * JPEG::
- * PNG::
- * ICS::
- * torrent::
- * Shapefile::
- * CBOR::
- * TAR::
- * INI::
- * Other: Other (3).
- @end menu
- @node JSON
- @subsection JSON
- @itemize
- @item
- @code{guile-json}
- @itemize
- @item
- on GitHub: @uref{https://github.com/aconchillo/guile-json}
- @item
- on savannah: @uref{http://savannah.nongnu.org/projects/guile-json/}
- @end itemize
- @item
- @code{guile-json} (another one)
- @itemize
- @item
- git repo: @uref{https://github.com/cthom06/guile-json}
- @item
- description: @emph{"A basic JSON parser for Guile"} (@uref{https://github.com/cthom06/guile-json/blob/1b2f77c4242fa52d6f8624806ec0c47e0d2ca08a/README})
- @end itemize
- @end itemize
- @node YAML
- @subsection YAML
- @itemize
- @item
- @code{guile-libyaml}
- @itemize
- @item
- git repo: @uref{https://github.com/mwette/guile-libyaml}
- @item
- description: @emph{"simple yaml module using ffi-helper from www.nongnu.org/nyacc"} (@uref{https://github.com/mwette/guile-libyaml/blob/f5d33a6880e96571d3cb079ed7755ffc156cac46/README.md})
- @end itemize
- @end itemize
- @node CSV
- @subsection CSV
- @itemize
- @item
- @code{guile-csv}
- @itemize
- @item
- git repository at GitLab: @uref{https://gitlab.com/NalaGinrut/guile-csv}
- @end itemize
- @item
- @code{guile-dsv}
- @itemize
- @item
- This is more general, but can work with CSV as well.
- @item
- git repository at GitHub: @uref{https://github.com/artyom-poptsov/guile-dsv}
- @end itemize
- @end itemize
- @node XML
- @subsection XML
- @itemize
- @item
- Guile's standard library SXML implementation
- @itemize
- @item
- GNU software manual: @uref{https://www.gnu.org/software/guile/manual/html_node/SXML.html}
- @item
- Basically your templates become functions or macros.
- @item
- The structure of your document is kept as Scheme data structures.
- @itemize
- @item
- This avoids having parse the document as a long string into an internal data structure to perform semantic transformations.
- @item
- It enables pattern matching without resorting to things like regular expressions and similar shenanigans.
- @end itemize
- @end itemize
- @end itemize
- @node Markdown
- @subsection Markdown
- @itemize
- @item
- @code{guile-commonmark}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/OrangeShark/guile-commonmark}
- @item
- documentation: ???
- @end itemize
- @end itemize
- @node Texinfo
- @subsection Texinfo
- @itemize
- @item
- Guile standard library texinfo functionality
- @itemize
- @item
- GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/texinfo.html}
- @end itemize
- @end itemize
- @node JPEG
- @subsection JPEG
- @itemize
- @item
- @code{guile-jpeg}: a library for parsing JPEG files
- @itemize
- @item
- git repo: @uref{https://github.com/guildhall/guile-jpeg} (archived)
- @end itemize
- @end itemize
- @node PNG
- @subsection PNG
- @itemize
- @item
- @samp{guile-PNG}
- @itemize
- @item
- git repo: @uref{https://github.com/artyom-poptsov/guile-png}
- @item
- description: "Portable Network Graphics (PNG, RFC 2083) library for GNU Guile." -- @uref{https://github.com/artyom-poptsov/guile-png/blob/06bb2c734c3007346f970be6f6a00407ac5d76f0/README.org}
- @end itemize
- @end itemize
- @node ICS
- @subsection ICS
- @itemize
- @item
- @code{guile-ics}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/artyom-poptsov/guile-ics}
- @end itemize
- @end itemize
- @node torrent
- @subsection torrent
- @itemize
- @item
- @code{torrent}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/o-nly/torrent}
- @item
- documentation at: ???
- @end itemize
- @end itemize
- @node Shapefile
- @subsection Shapefile
- @itemize
- @item
- @code{guile-shapefile}
- @itemize
- @item
- git repository: @uref{https://github.com/HugoNikanor/guile-shapefile}
- @item
- description: @emph{"Guile Shapefile is a Guile library for reading shapefiles."} (@uref{https://github.com/HugoNikanor/guile-shapefile/blob/37fd219d3dc3d944e8f29b1bad6baf9e59372275/README.md})
- @item
- documentation: @uref{https://hugonikanor.github.io/guile-shapefile/}
- @end itemize
- @end itemize
- @node CBOR
- @subsection CBOR
- @itemize
- @item
- @code{guile-cbor}
- @itemize
- @item
- git repo: @uref{https://inqlab.net/git/guile-cbor.git/}
- @item
- description:
- @quotation
- The Concise Binary Object Representation (CBOR), as specified by RFC 8949,
- is a binary data serialization format. CBOR is similar to JSON but
- serializes to binary which is smaller and faster to generate and parse.
- @end quotation
- @end itemize
- @end itemize
- @node TAR
- @subsection TAR
- There is no standalone library for TAR files yet (2021-11-15), but there is code dealing with TAR files, which might be separatable into its own library:
- @itemize
- @item
- Implementation of Ustar in Gash:
- @itemize
- @item
- @uref{https://git.savannah.nongnu.org/cgit/gash/gash-utils.git/tree/gash/commands/tar.scm}
- @item
- @uref{https://git.savannah.nongnu.org/cgit/gash/gash-utils.git/tree/gash/ustar.scm}
- @end itemize
- @item
- GNU Tar stuff:
- @itemize
- @item
- @uref{https://git.savannah.gnu.org/cgit/tar.git/tree/src/tar.h}
- @item
- @uref{https://savannah.gnu.org/git/?group=tar}
- @item
- @uref{https://www.gnu.org/software/tar/}
- @end itemize
- @end itemize
- @node INI
- @subsection INI
- @itemize
- @item
- @code{Guile-INI}
- @itemize
- @item
- git repository: @uref{https://github.com/artyom-poptsov/guile-ini}
- @item
- description: @emph{"A GNU Guile library for working with INI format."} (@uref{https://github.com/artyom-poptsov/guile-ini/blob/6764a8a23d8d5911c08ee2bc996cb776e6b0ae5e/README.org})
- @item
- documentation: @uref{https://github.com/artyom-poptsov/guile-ini/tree/master/doc}
- @end itemize
- @end itemize
- @node Other (3)
- @subsection Other
- @itemize
- @item
- @code{guile-mime}
- @itemize
- @item
- git repo: @uref{https://mikegerwitz.com/projects/guile-mime/tree/}
- @item
- description: A library, that helps figuring out the MIME type of a file.
- @end itemize
- @item
- 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.
- @end itemize
- @node File system
- @section File system
- @itemize
- @item
- @code{sdupes}
- @itemize
- @item
- description: duplicate file detection
- @item
- git repository at GitHub: @uref{https://github.com/sph-mn/sdupes}
- @end itemize
- @item
- @code{duplicates}
- @itemize
- @item
- git repo: @uref{https://github.com/rashack/duplicates}
- @item
- description: @emph{"Find duplicate files - in Guile Scheme"} (@uref{https://github.com/rashack/duplicates})
- @end itemize
- @item
- @code{guile-filesystem}
- @itemize
- @item
- git repo: @uref{https://gitlab.com/lilyp/guile-filesystem}
- @item
- description: "[@dots{}] provides a set of utilities to deal with the filesystem beyond what POSIX mandates, from manipulating file names to actually creating files and directories." -- @uref{https://gitlab.com/lilyp/guile-filesystem/-/blob/f1f7f45c23a8662abdecc4b054b4da64f3cc868f/README.org}
- @end itemize
- @item
- @code{guile-fslib}
- @itemize
- @item
- git repo: @uref{https://notabug.org/ZelphirKaltstahl/guile-fslib}
- @item
- description: "guile-fslib is a library, which contains procedures for working with filenames. It simplifies common tasks like splitting, joining and getting the file extension of a filename." -- @uref{https://notabug.org/ZelphirKaltstahl/guile-fslib/src/67266331dc9be54cc4c7bf2a6b814815c21e44e1/README.org}
- @end itemize
- @end itemize
- @node Game development
- @section Game development
- @itemize
- @item
- Chickadee
- @itemize
- @item
- describes itself as "game development toolkit"
- @item
- OpenGL based
- @item
- website: @uref{https://dthompson.us/projects/chickadee.html}
- @item
- manual: @uref{https://dthompson.us/manuals/chickadee/index.html}
- @end itemize
- @item
- @code{guile-allegro5}
- @itemize
- @item
- git repo: @uref{https://github.com/davexunit/guile-allegro5}
- @item
- description: @emph{"Allegro 5 is a cross-platform, open source, game programming library written in C@. Guile-allegro5 is a collection of modules that provides bindings for Guile."} (@uref{https://github.com/davexunit/guile-allegro5/blob/614ecc978e034f7b7ba5bd23e27111c8fef81b56/README.md})
- @end itemize
- @item
- @code{gzochi}
- @itemize
- @item
- git repo: @uref{https://git.savannah.gnu.org/cgit/gzochi.git}
- @item
- project page: @uref{https://www.nongnu.org/gzochi/}
- @item
- documentation: @uref{https://www.nongnu.org/gzochi/gzochid.html}
- @item
- description:
- @quotation
- gzochi (@emph{zoʊ-tʃiː}) is a programming framework for developing online games
- in GNU Guile, and a distributed middleware container that hosts your games
- for thousands of connected players. gzochi takes care of the hard parts of
- online game development - concurrency, data persistence, and network
- communications - so you can focus on the stuff that matters!
- @end quotation
- (@uref{https://www.nongnu.org/gzochi/})
- @end itemize
- @end itemize
- @node Games
- @section Games
- @itemize
- @item
- StayAlive
- @itemize
- @item
- git repo: @uref{https://github.com/mwitmer/StayAlive}
- @end itemize
- @item
- dryads-wake
- @itemize
- @item
- git repo: @uref{https://hg.sr.ht/~arnebab/dryads-wake}
- @item
- description:
- @quotation
- Dryads Wake is a game of dialogue and choices.
- (@uref{https://hg.sr.ht/~arnebab/dryads-wake})
- @end quotation
- @end itemize
- @item
- @code{guile-mud}
- @itemize
- @item
- git repo: @uref{https://github.com/NalaGinrut/guile-mud}
- @item
- description: ???
- @end itemize
- @item
- @code{game_of_life}
- @itemize
- @item
- git repo: @uref{https://github.com/deathgrindfreak/game_of_life}
- @item
- description: @emph{"An implementation of Conway's Game of Life in Guile Scheme."} (@uref{https://github.com/deathgrindfreak/game_of_life/blob/501f7d3c0dc50a3cbac8df3620f8e507f32d5aa5/README.md})
- @end itemize
- @end itemize
- @node Generators
- @section Generators
- @itemize
- @item
- C-Ast
- @itemize
- @item
- git repo: @uref{https://github.com/zenhack/c-ast}
- @item
- description: @emph{"C-Ast is a GNU Guile library for generating C code."} (@uref{https://github.com/zenhack/c-ast/blob/5af5758ccae5e468587cda837e1fd9e685205bef/README.md})
- @end itemize
- @end itemize
- @node Genomics
- @section Genomics
- @itemize
- @item
- @code{sparqling-genomics}
- @itemize
- @item
- git repo: @uref{https://github.com/UMCUGenetics/sparqling-genomics}
- @item
- description:
- @quotation
- 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.
- (@uref{https://github.com/UMCUGenetics/sparqling-genomics})
- @end quotation
- @item
- usage example: @uref{https://github.com/UMCUGenetics/sparqling-genomics/blob/dc5fea515c30aa26ff60b77911438689473d125b/web/ldap/authenticate.scm.in#L148}
- @end itemize
- @end itemize
- @node Graphics
- @section Graphics
- @itemize
- @item
- @code{guile-sdl}
- @itemize
- @item
- GNU software page: @uref{https://www.gnu.org/software/guile-sdl/}
- @item
- gnuvola page of examples: @uref{http://www.gnuvola.org/software/guile-sdl-demos/}
- @item
- gnuvola software page: @uref{http://www.gnuvola.org/software/guile-sdl-demos/}
- @end itemize
- @item
- @code{guile-sdl2}
- @itemize
- @item
- project website: @uref{https://dthompson.us/projects/guile-sdl2.html}
- @end itemize
- @item
- @code{guile-opengl}
- @itemize
- @item
- GNU software page: @uref{https://www.gnu.org/software/guile-opengl/}
- @item
- GNU software manual page: @uref{https://www.gnu.org/software/guile-opengl/manual/guile-opengl.html}
- @item
- git repository at Savannah: @uref{http://savannah.gnu.org/projects/guile-opengl}
- @end itemize
- @item
- @code{guile-cairo}
- @itemize
- @item
- git repository at Savannah: @uref{http://savannah.nongnu.org/projects/guile-cairo}
- @end itemize
- @item
- @code{guile-jpeg}: a library for parsing JPEG files
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/guildhall/guile-jpeg}
- @end itemize
- @end itemize
- @menu
- * Image processing::
- * Design and CAD::
- @end menu
- @node Image processing
- @subsection Image processing
- @itemize
- @item
- @code{guile-cv}
- @itemize
- @item
- GNU software page: @uref{https://www.gnu.org/software/guile-cv/}
- @item
- git repository at Savannah: @uref{http://git.savannah.gnu.org/cgit/guile-cv.git}
- @end itemize
- @item
- @code{guile-picture-language}
- @itemize
- @item
- website: @uref{https://elephly.net/guile-picture-language/}
- @item
- repository: @uref{https://git.elephly.net/gitweb.cgi?p=software/guile-picture-language.git}
- @item
- manual: @uref{https://elephly.net/guile-picture-language/manual.html}
- @end itemize
- @end itemize
- @node Design and CAD
- @subsection Design and CAD
- @itemize
- @item
- @code{libfive}
- @itemize
- @item
- website: @uref{https://libfive.com/}
- @item
- git repository: @uref{https://github.com/libfive/libfive}
- @item
- description:
- @quotation
- "libfive is a software library and set of tools for solid modeling, especially suited for parametric and procedural design. It is infrastructure for generative design, mass customization, and domain-specific CAD tools."
- -- @uref{https://libfive.com/} (2021-05-13)
- @end quotation
- libfive itself is not written in GNU Guile, but interaction with it include
- using GNU Guile as a modelling language.
- @end itemize
- @end itemize
- @node GUI development (1)
- @section GUI development
- @itemize
- @item
- @code{guile-gi}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/spk121/guile-gi}
- @item
- documentation at: @uref{https://spk121.github.io/guile-gi/}
- @item
- description:
- @quotation
- This is a library for GNU Guile to create language bindings via GObject Introspection.
- GNU Guile is an implementation of Scheme, which is a Lisp-like language. This library allows Guile to use GObject-based libraries -- such as GTK+3, GLib, and WebKit2 -- by generating a Scheme API from the GObject Introspection information provided by those libraries.
- [@dots{}]
- -- @uref{https://raw.githubusercontent.com/spk121/guile-gi/c4a9b8d11debe9a633a4be936f1bbf4b7098fe66/README.md}
- @end quotation
- @end itemize
- @item
- @code{guile-gnome}
- @itemize
- @item
- GNU software page: @uref{https://www.gnu.org/software/guile-gnome/}
- @item
- git repository at Savannah: @uref{http://git.savannah.gnu.org/cgit/guile-gnome.git}
- @end itemize
- @item
- @code{guile-gtk}
- @itemize
- @item
- website: @uref{https://www.gnu.org/software/guile-gtk/}
- @item
- CVS repository at non-GNU Savannah: @uref{http://savannah.nongnu.org/projects/guile-gtk/}
- @end itemize
- @item
- @code{g-golf}: @uref{https://www.gnu.org/software/g-golf/}
- @item
- @samp{guile-webview}
- @itemize
- @item
- git repository: @uref{https://github.com/KikyTokamuro/guile-webview}
- @item
- description: @emph{"Wrapper for using libwebview from GNU Guile"} -- @uref{https://github.com/KikyTokamuro/guile-webview/blob/a2af7bc339e777b05e304158bcfae23815d8bcef/README.md}
- @item
- documentation: @uref{https://github.com/KikyTokamuro/guile-webview/tree/main/examples}
- @end itemize
- @end itemize
- @node Language
- @section Language
- @itemize
- @item
- @code{guile-aspell}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/spk121/guile-aspell}
- @item
- website: @uref{http://lonelycactus.com/guile-aspell.html}
- @end itemize
- @end itemize
- @node Logging
- @section Logging
- @itemize
- @item
- @code{guile-logging}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/shanecelis/guile-logging}
- @end itemize
- @item
- SysLog proposal
- @itemize
- @item
- git repo: @uref{https://bitbucket.org/cowan/r7rs-wg1-infra/src/default/SyslogCowan.md}
- @item
- description: This is a specification for an implementation of syslog.
- @end itemize
- @item
- logging module of @code{sparqling-genomics}
- @itemize
- @item
- git repo: @uref{https://github.com/UMCUGenetics/sparqling-genomics/blob/master/web/logger.scm}
- @item
- description: This is what @code{sparqling-genomics} uses internally.
- @end itemize
- @end itemize
- @node Machine Learning
- @section Machine Learning
- @itemize
- @item
- decision tree
- @itemize
- @item
- @code{guile-ml}
- @itemize
- @item
- repository at notabug.org: @uref{https://notabug.org/ZelphirKaltstahl/guile-ml}
- @end itemize
- @end itemize
- @item
- @code{guile-snowball-stemmer}
- @itemize
- @item
- mentioned on: @uref{https://snowballstem.org/projects.html}
- @item
- mentioned on: @uref{https://github.com/snowballstem/snowball/issues/34#issuecomment-491056371}
- @item
- git repo: unfortunately the link to the repository is broken
- @end itemize
- @item
- AIscm
- @itemize
- @item
- website: @uref{http://wedesoft.github.io/aiscm/}
- @item
- description:
- @quotation
- AIscm is a Guile extension for numerical arrays and tensors. Performance is achieved by using the LLVM JIT compiler.
- (@uref{http://wedesoft.github.io/aiscm/})
- @end quotation
- @end itemize
- @end itemize
- @node Macros (1)
- @section Macros
- @itemize
- @item
- @code{guile-for-loops}
- @itemize
- @item
- mercurial repo: @uref{https://hg.sr.ht/~bjoli/guile-for-loops}
- @item
- description:
- @quotation
- 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.
- [@dots{}]
- (@uref{https://hg.sr.ht/~bjoli/guile-for-loops/browse/README.md?rev=580d3fb365ea2734b037ad3ca7f2ab1e4aa5116d})
- @end quotation
- @end itemize
- @item
- @code{goof-loop}
- @itemize
- @item
- repository: @uref{https://git.sr.ht/~bjoli/goof-loop/}
- @item
- description:
- @quotation
- goof-loop - a scheme looping facility
- goof-loops aims to be an amalgamation of the racket for loops and Alex Shinn's (chibi-loop). We are many that found racket's for loops a breeze of fresh air, but in the end their most general forms (for/fold and for/foldr) are kinda odd to work with. If you choose not to use those general for loops, you cannot express arbitrary transformations, like say a fibonacci sequence, since for clauses cannot reference eachother. goof-loop tries to fix this [@dots{}]
- -- @uref{https://git.sr.ht/~bjoli/goof-loop/tree/cccc324ecd14325d9f2fe4c7eabd8bc217823d32/item/README.md}
- @end quotation
- @end itemize
- @item
- @code{megacut} macro:
- @itemize
- @item
- mercurial repo: @uref{https://hg.sr.ht/~bjoli/megacut}
- @item
- description:
- @quotation
- 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).
- (@uref{https://hg.sr.ht/~bjoli/megacut/browse/readme.txt?rev=75caf96aa4a9282d489230fe56fff4f1aa5e2564})
- @end quotation
- @end itemize
- @item
- GNU Thales
- @itemize
- @item
- project page: @uref{https://savannah.gnu.org/projects/thales}
- @item
- git repo: @uref{https://git.savannah.gnu.org/cgit/thales.git}
- @item
- description: @emph{"GNU Thales is set of GNU Guile macroses to perform doctests."} (@uref{https://savannah.gnu.org/projects/thales})
- @end itemize
- @item
- Documentation for Scheme Syntax Extension Packages in SLIB
- @itemize
- @item
- website: @uref{https://people.csail.mit.edu/jaffer/slib/Scheme-Syntax-Extension-Packages.html#Scheme-Syntax-Extension-Packages}
- @end itemize
- @item
- Implementation of function contracts: @uref{https://notabug.org/ZelphirKaltstahl/guile-examples/src/master/macros/contract.scm}
- @end itemize
- @node Message Queues
- @section Message Queues
- @itemize
- @item
- Zero MQ
- @itemize
- @item
- @code{guile-zmq}
- @itemize
- @item
- git repository at GitLab: @uref{https://gitlab.com/NalaGinrut/guile-zmq}
- @end itemize
- @item
- @code{guile-simple-zmq}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/jerry40/guile-simple-zmq}
- @end itemize
- @end itemize
- @end itemize
- @node Network programming
- @section Network programming
- @itemize
- @item
- Guile's standard library networking module
- @itemize
- @item
- GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/Networking.html}
- @end itemize
- @item
- @code{guile-curl}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/spk121/guile-curl}
- @end itemize
- @item
- @code{guile-ssh}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/artyom-poptsov/guile-ssh}
- @end itemize
- @item
- GNU Serveez
- @itemize
- @item
- GNU software page: @uref{https://www.gnu.org/software/serveez/}
- @item
- manual: @uref{https://www.gnu.org/software/serveez/manual/}
- @item
- git repository at Savannah: @uref{http://savannah.gnu.org/projects/serveez/}
- @end itemize
- @item
- @code{serveez-mg}
- @itemize
- @item
- git repository at GitHub @uref{https://github.com/spk121/serveez-mg}
- @item
- based on GNU Serveez
- @end itemize
- @item
- @code{stis-engine}
- @itemize
- @item
- git repository at: @uref{https://gitlab.com/tampe/stis-engine}
- @item
- description: @emph{"Communication layer ontop of guile fibers"} -- @uref{https://gitlab.com/tampe/stis-engine}
- @end itemize
- @item
- @samp{Scheme-GNUnet}
- @itemize
- @item
- git repository: @uref{https://git.gnunet.org/gnunet-scheme.git/}
- @item
- description:
- @quotation
- Scheme-GNUnet is a WIP (Guile) Scheme port of the GNUnet client libraries.
- Unlike gnunet-guile, it is not a binding for the C libraries. It can be
- used in multi-threaded applications, e.g. with guile-fibers.
- It is not to be confused with @uref{https://git.gnunet.org/gnunet-guile2.git}
- and @uref{https://git.savannah.gnu.org/cgit/guix/gnunet.git}, which implement
- bindings for the C libraries and support a different set of services.
- -- Guile user mailing list
- @end quotation
- @item
- documentation: @uref{https://git.gnunet.org/gnunet-scheme.git/tree/doc}
- @end itemize
- @end itemize
- @node Parallelism
- @section Parallelism
- @itemize
- @item
- standard library futures
- @itemize
- @item
- 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?)
- @item
- description:
- @quotation
- [@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{}]
- @end quotation
- @end itemize
- @item
- @code{guile-fibers}
- @itemize
- @item
- git repo: @uref{https://github.com/wingo/fibers}
- @item
- description:
- @quotation
- Concurrent ML-like concurrency for Guile
- @end quotation
- @end itemize
- @item
- standard library parallel forms
- @itemize
- @item
- GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/Parallel-Forms.html}
- @item
- 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.
- @end itemize
- @item
- @samp{guile-parallel}
- @itemize
- @item
- git repo: @uref{https://git.sr.ht/~old/guile-parallel}
- @item
- description: "High level structures and procedures for parallelism." -- @uref{https://git.sr.ht/~old/guile-parallel/tree/dc1a55ea2499b6ca4355e9aae1d7256effd14355/item/README.md}
- @end itemize
- @end itemize
- @node Parsing
- @section Parsing
- @menu
- * Parser Combinators::
- * Parser Generator::
- * Other: Other (4).
- * XML parser::
- @end menu
- @node Parser Combinators
- @subsection Parser Combinators
- @itemize
- @item
- @code{stis-parser}
- @itemize
- @item
- git repository at GitLab: @uref{https://gitlab.com/tampe/stis-parser}
- @end itemize
- @end itemize
- @node Parser Generator
- @subsection Parser Generator
- @itemize
- @item
- @code{nyacc}: Not Yet Another Compiler Compiler
- @itemize
- @item
- git repository at Savannah: @uref{https://savannah.nongnu.org/projects/nyacc}
- @item
- documentation: @uref{https://www.nongnu.org/nyacc/nyacc-ug.html}
- @end itemize
- @end itemize
- @node Other (4)
- @subsection Other
- @itemize
- @item
- standard library PEG parsing
- @itemize
- @item
- GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/PEG-Parsing.html}
- @item
- description:
- @quotation
- Parsing Expression Grammars (PEGs) are a way of specifying formal languages for text processing.
- (@uref{https://www.gnu.org/software/guile/manual/html_node/PEG-Parsing.html})
- @end quotation
- @end itemize
- @end itemize
- @node XML parser
- @subsection XML parser
- @itemize
- @item
- Mixp:
- @itemize
- @item
- git repository: @uref{https://git.savannah.nongnu.org/cgit/mixp.git}
- @item
- website: @uref{https://www.nongnu.org/mixp/}
- @item
- description: @emph{"Mixp is a set of modules for Guile that wrap libexpat and provide higher-level utilities. [@dots{}]"} (@uref{https://savannah.nongnu.org/projects/mixp})
- @item
- documentation: ???
- @end itemize
- @end itemize
- @node Plotting
- @section Plotting
- @itemize
- @item
- @code{guile-plotutils}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/spk121/guile-plotutils}
- @item
- website: @uref{https://www.gnu.org/software/plotutils/plotutils.html}
- @end itemize
- @end itemize
- @node Protocols
- @section Protocols
- @itemize
- @item
- X protocol
- @itemize
- @item
- @code{guile-xcb}
- @itemize
- @item
- git repo: @uref{https://github.com/mwitmer/guile-xcb}
- @end itemize
- @end itemize
- @end itemize
- @node Serialization
- @section Serialization
- @itemize
- @item
- @code{guile-msgpack}
- @itemize
- @item
- git repo: @uref{https://gitlab.com/HiPhish/guile-msgpack}
- @item
- description:
- @quotation
- 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.
- (@uref{https://gitlab.com/HiPhish/guile-msgpack/-/blob/master/README.rst})
- @end quotation
- @end itemize
- @item
- @code{stis-data}
- @itemize
- @item
- git repo: @uref{https://gitlab.com/tampe/stis-data}
- @item
- description: @emph{"Serializing guile datastructures into binary format"} -- @uref{https://gitlab.com/tampe/stis-data/-/blob/08d2de0ceef22f87083221b1b59c91de76836bd9/README.md}
- @end itemize
- @end itemize
- @node SRFI (Scheme Request For Implementation) implementations
- @section SRFI (Scheme Request For Implementation) implementations
- @itemize
- @item
- @code{TaylanUB/scheme-srfis}
- @itemize
- @item
- git repo: @uref{https://github.com/TaylanUB/scheme-srfis}
- @item
- description: This repository contains implementations for some SRFIs.
- @end itemize
- @item
- @code{srfi-78-guile}
- @itemize
- @item
- git repo: @uref{https://github.com/sunjoong/srfi-78-guile}
- @item
- description: @emph{"SRFI 78: Lightweight testing by Sebastian Egner"} (@uref{https://github.com/sunjoong/srfi-78-guile})
- @end itemize
- @item
- @code{guile-srfi89}
- @itemize
- @item
- git repo: @uref{https://gitlab.com/mjbecze/guile-srfi-89}
- @item
- description: @emph{"This is a hygienic implemention of SRFI 89 (Optional positional and named parameters) for Guile Scheme."} (@uref{https://gitlab.com/mjbecze/guile-srfi-89/-/blob/0c907086e809c69faaac75ce2feeb3ba1694f037/README.md})
- @end itemize
- @item
- @code{srfi-151}
- @itemize
- @item
- git repo: @uref{https://github.com/ft/srfi-151}
- @item
- description: @emph{"SRFI-151 — Bitwise Operations — Implementation for GNU Guile"} (@uref{https://github.com/ft/srfi-151/blob/486ee152c826ad07eaf4e8765e8c20842dba0915/README})
- @item
- license: @uref{https://github.com/ft/srfi-151/blob/486ee152c826ad07eaf4e8765e8c20842dba0915/LICENCE}
- @item
- documentation: @uref{https://srfi.schemers.org/srfi-151/srfi-151.html}
- @end itemize
- @item
- @code{scheme-libraries}
- @itemize
- @item
- repository: @uref{https://launchpad.net/scheme-libraries}
- @end itemize
- @item
- @code{wisp}
- @itemize
- @item
- mercurial repo: @uref{https://hg.sr.ht/~arnebab/wisp}
- @item
- website: @uref{http://draketo.de/english/wisp}, @uref{https://srfi.schemers.org/srfi-119/srfi-119.html}
- @item
- GNU Guix package: @code{guile-wisp}
- @item
- description: @emph{"wisp: simpler indentation-sensitive scheme"} (@uref{https://srfi.schemers.org/srfi-119/srfi-119.html})
- @end itemize
- @item
- @code{awesome-coroutine-generators}
- @itemize
- @item
- git repository: @uref{https://git.sr.ht/~bjoli/awesome-coroutine-generators/tree}
- @item
- description: an implementation of SRFI-158
- @end itemize
- @item
- double ended queue
- @itemize
- @item
- website: @uref{https://srfi.schemers.org/srfi-134/srfi-134.html}
- @item
- repository: @uref{https://github.com/scheme-requests-for-implementation/srfi-134/}
- @end itemize
- @end itemize
- @node Strings
- @section Strings
- @itemize
- @item
- @code{guile-raw-strings}
- @itemize
- @item
- git repo: @uref{https://github.com/lloda/guile-raw-strings}
- @end itemize
- @end itemize
- @node Syntax
- @section Syntax
- @itemize
- @item
- (grand scheme) glossary
- @itemize
- @item
- git repo: @uref{https://github.com/plande/grand-scheme}
- @end itemize
- @end itemize
- @node Regular expressions
- @section Regular expressions
- @itemize
- @item
- IrRegular Expressions (Scheme, R[4567]RS)
- @itemize
- @item
- website: @uref{http://synthcode.com/scheme/irregex}
- @end itemize
- @end itemize
- @node REPL (Read Eval Print Loop)
- @section REPL (Read Eval Print Loop)
- @itemize
- @item
- @code{guile-colorized}
- @itemize
- @item
- git repository at GitLab: @uref{https://gitlab.com/NalaGinrut/guile-colorized}
- @end itemize
- @end itemize
- @node RPC (Remote Procedure Call)
- @section RPC (Remote Procedure Call)
- @itemize
- @item
- GNU Guile-RPC
- @itemize
- @item
- website: @uref{https://www.gnu.org/software/guile-rpc/}
- @item
- documentation: @uref{https://www.gnu.org/software/guile-rpc/manual/}
- @item
- git repo: @uref{http://git.savannah.gnu.org/gitweb/?p=guile-rpc.git}
- @end itemize
- @item
- @code{guile-xmlrpc}:
- @itemize
- @item
- description:
- @quotation
- 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.
- (@uref{https://github.com/aconchillo/guile-xmlrpc/blob/master/README.org})
- @end quotation
- @item
- git repo: @uref{https://github.com/aconchillo/guile-xmlrpc}
- @item
- manual: (readme file in git repo)
- @end itemize
- @end itemize
- @node Scientific computing and mathematics
- @section Scientific computing and mathematics
- @itemize
- @item
- GNU Scientific Library (GSL)
- @itemize
- @item
- GNU software page @uref{https://www.gnu.org/software/gsl/}
- @item
- git repository at Savannah: @uref{http://savannah.gnu.org/projects/gsl/}
- @item
- wikipedia page: @uref{https://en.wikipedia.org/wiki/GNU_Scientific_Library}
- @item
- Guile bindings: @uref{http://community.schemewiki.org/?gee-guile-gsl}
- @end itemize
- @item
- Matrix multiplication
- @itemize
- @item
- @code{guile-ffi-cblas}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/lloda/guile-ffi-cblas}
- @end itemize
- @end itemize
- @item
- Fast Fourier Transformation
- @itemize
- @item
- @code{guile-ffi-fftw} by lloda
- @itemize
- @item
- git repo: @uref{https://github.com/lloda/guile-ffi-fftw}
- @item
- description: @emph{"A simple wrapper for FFTW, using Guile's FFI"} (@uref{https://github.com/lloda/guile-ffi-fftw})
- @end itemize
- @item
- @code{guile-ffi-fftw} by Mikael Djurfeldt
- @itemize
- @item
- git repo at Savannah: @uref{https://savannah.nongnu.org/projects/guile-fftw}
- @item
- description:
- @end itemize
- @end itemize
- @item
- Symbolic mathematics
- @itemize
- @item
- @code{guile-scmutils}
- @itemize
- @item
- website: @uref{https://www.cs.rochester.edu/~gildea/guile-scmutils/}
- @item
- download: @uref{https://www.cs.rochester.edu/~gildea/guile-scmutils/guile-scmutils-v1.0.tgz}
- @item
- description:
- @quotation
- 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.
- (@uref{https://www.cs.rochester.edu/~gildea/guile-scmutils/})
- @end quotation
- @end itemize
- @end itemize
- @item
- Guile implementation of symbolic mathematics shown in SICP
- @itemize
- @item
- Does this exist?
- @end itemize
- @end itemize
- @menu
- * Interaction with the Jupyter ecosystem::
- @end menu
- @node Interaction with the Jupyter ecosystem
- @subsection Interaction with the Jupyter ecosystem
- @itemize
- @item
- @code{guix-kernel}
- @itemize
- @item
- git repository at gitlab.inria.fr: @uref{https://gitlab.inria.fr/guix-hpc/guix-kernel}
- @item
- blog post: @uref{https://hpc.guix.info/blog/2019/10/towards-reproducible-jupyter-notebooks/}
- @end itemize
- @item
- @code{guile-kernel}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/jerry40/guile-kernel}
- @end itemize
- @end itemize
- @node Search engine
- @section Search engine
- @itemize
- @item
- @code{babelia}
- @itemize
- @item
- git repo: @uref{https://github.com/amirouche/babelia}
- @item
- description:
- @quotation
- Wanna be search engine with federation support
- (@uref{https://github.com/amirouche/babelia})
- @end quotation
- @end itemize
- @end itemize
- @node Shell
- @section Shell
- @itemize
- @item
- @code{gash}
- @itemize
- @item
- git repo: @uref{https://git.savannah.nongnu.org/cgit/gash.git}
- @item
- description:
- @quotation
- Gash is a POSIX-compatible shell written in Guile Scheme. It provides both
- the shell interface, as well as a Guile library for parsing shell scripts.
- Gash is designed to bootstrap Bash as part of the Guix bootstrap process.
- We are planning to develop Gash into a general-purpose shell and tool for
- building interfaces between Scheme and the shell.
- @end quotation
- (@uref{https://git.savannah.nongnu.org/cgit/gash.git/tree/README?id=8f9b973264cc799df27795df6230839e96dc00eb})
- @end itemize
- @end itemize
- @node TUI development
- @section TUI development
- @itemize
- @item
- @code{guile-ncurses}
- @itemize
- @item
- GNU software page: @uref{https://www.gnu.org/software/guile-ncurses/}
- @item
- git repository at GitHub: @uref{https://github.com/guildhall/guile-ncurses}
- @end itemize
- @item
- @code{guile-termios}
- @itemize
- @item
- git repository: @uref{https://gitlab.com/ft/guile-termios}
- @item
- description:
- @quotation
- POSIX termios interface for GNU Guile
- To query and change settings of serial devices on POSIX systems, the termios
- API is used. GNU Guile doesn't have an interface for that built in. This module
- implements this interface by use of Guile's dynamic FFI@.
- [@dots{}]
- -- @uref{https://gitlab.com/ft/guile-termios/-/blob/29dfd68bdc64d6cea0cd4a50757439b77523e9f5/README}
- @end quotation
- @item
- license: @uref{https://gitlab.com/ft/guile-termios/-/blob/29dfd68bdc64d6cea0cd4a50757439b77523e9f5/LICENCE}
- @end itemize
- @end itemize
- @node Testing
- @section Testing
- @menu
- * Integration testing::
- * Unit testing::
- * Other: Other (5).
- @end menu
- @node Integration testing
- @subsection Integration testing
- @itemize
- @item
- @code{guix-cuirass}
- @itemize
- @item
- git repo: @uref{https://gitlab.com/mothacehe/guix-cuirass}
- @item
- website: ???
- @end itemize
- @end itemize
- @node Unit testing
- @subsection Unit testing
- @itemize
- @item
- srfi-64 (@uref{https://srfi.schemers.org/srfi-64/srfi-64.html})
- @itemize
- @item
- GNU software Guile manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/SRFI_002d64.html}
- @end itemize
- @item
- @code{srfi-64-driver}
- @itemize
- @item
- git repository at: ???
- @item
- website: @uref{https://ngyro.com/software/srfi-64-driver.html}
- @end itemize
- @item
- @code{guile-testing}
- @itemize
- @item
- git repository at: @uref{https://github.com/wedesoft/guile-testing}
- @item
- 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})
- @end itemize
- @item
- @code{guile-unit}
- @itemize
- @item
- git repository: ??? (was at @uref{https://github.com/sirius94/guile-unit})
- @item
- description: ???
- @end itemize
- @item
- @code{ggspec}
- @itemize
- @item
- git repo: @uref{https://github.com/yawaramin/ggspec}
- @item
- description: @emph{"lightweight unit testing library for Guile"} (@uref{https://github.com/yawaramin/ggspec/blob/97dab55962f63d9692475b171fd6fbd76ac64731/README.md})
- @end itemize
- @end itemize
- @enumerate
- @item
- @anchor{TAP output}TAP output
- @itemize
- @item
- @code{guile-tap}
- @itemize
- @item
- git repo: @uref{https://github.com/xevz/guile-tap}
- @item
- description: @emph{"Simple Guile module which provides TAP compilant output."} (@uref{https://github.com/xevz/guile-tap})
- @end itemize
- @item
- @code{guile-tap}
- @itemize
- @item
- Yes there are 2!
- @item
- git repo: @uref{https://gitlab.com/ft/guile-tap}
- @item
- description: @emph{"This is a library for GNU Guile that implements a framework for specifying test cases that emit output that adheres to the Test Anything Protocol (TAP)¹."} (@uref{https://gitlab.com/ft/guile-tap/-/blob/87edc4b74bfe0774af0211c06a30366a44c1371a/README})
- @item
- license: @uref{https://gitlab.com/ft/guile-tap/-/blob/87edc4b74bfe0774af0211c06a30366a44c1371a/LICENCE}
- @item
- @code{scm-test-tap}
- @itemize
- @item
- git repo: @uref{https://github.com/ft/scm-test-tap}
- @item
- description: @emph{"TAP emitting test-framework for GNU Guile"} (@uref{https://github.com/ft/scm-test-tap})
- @end itemize
- @end itemize
- @end itemize
- @end enumerate
- @node Other (5)
- @subsection Other
- @itemize
- @item
- @code{guile-quickcheck}
- @itemize
- @item
- git repo: @uref{https://git.ngyro.com/guile-quickcheck}
- @item
- website: @uref{https://ngyro.com/software/guile-quickcheck.html}
- @item
- description:
- @quotation
- This Guile library provides tools for randomized, property-based testing. It
- follows closely the QuickCheck library written in Haskell, with inspiration
- from the Racket version. You can use it to define a property (a predicate
- with specifications for its inputs) and test it by generating many random
- inputs and seeing if it holds.
- -- @uref{https://ngyro.com/software/guile-quickcheck.html}
- @end quotation
- @end itemize
- @item
- @samp{guile-proba}
- @itemize
- @item
- git repo: @uref{https://codeberg.org/luis-felipe/guile-proba}
- @item
- description:
- @quotation
- Guile Probá is a set of testing tools for GNU Guile projects with
- SRFI 64-based test suites. It comes with a command-line interface
- that allows you to autodiscover tests and run them, and a library
- that includes a test runner and helpers for writing tests.
- -- @uref{https://codeberg.org/luis-felipe/guile-proba/src/commit/f6b235072ec0f41dcdee8631d454c517e5637dbd/README.org}
- @end quotation
- @end itemize
- @end itemize
- @node Types
- @section Types
- @menu
- * Static typing::
- @end menu
- @node Static typing
- @subsection Static typing
- @itemize
- @item
- @code{Theme-D}
- @itemize
- @item
- source code: on website at: @uref{https://www.tohoyn.fi/theme-d/download.html}
- @item
- description:
- @quotation
- Programming language Theme-D extends Scheme with static typing. The current
- Scheme platform is guile 3.0 but the software works for guile 2.2,
- too. Theme-D resembles Jaap Weel's Theme but Theme-D is more dynamic and
- the objects in Theme-D need to have type tags. See Theme-D-Golf for GNOME
- bindings to Theme-D@.
- -- @uref{https://www.tohoyn.fi/theme-d/index.html}
- @end quotation
- @item
- license: parts as: LGPL-3, GFDL-1.3, GPL-3
- @item
- documentation:
- @itemize
- @item
- examples: @uref{https://www.tohoyn.fi/theme-d/examples.html}
- @item
- docs: @uref{https://www.tohoyn.fi/theme-d/documentation.html}
- @end itemize
- @end itemize
- @end itemize
- @node Version control systems
- @section Version control systems
- @itemize
- @item
- @code{guile-git}
- @itemize
- @item
- git repository at GitLab: @uref{https://gitlab.com/guile-git/guile-git}
- @end itemize
- @item
- @code{guile-semver}
- @itemize
- @item
- git repository at ngyro: @uref{https://git.ngyro.com/guile-semver}
- @item
- website at: @uref{https://ngyro.com/software/guile-semver.html}
- @end itemize
- @end itemize
- @node Web Development
- @section Web Development
- @menu
- * Web servers::
- * Web clients::
- * Web frameworks::
- * Protocols: Protocols (2).
- * Tooling / Additional libraries::
- * Static website generators::
- * Template engine::
- * Interaction with services::
- * Web application examples::
- * Web drivers / Selenium::
- @end menu
- @node Web servers
- @subsection Web servers
- @itemize
- @item
- Guile's standard library's web server:
- @itemize
- @item
- GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/Web-Server.html}
- @item
- 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}
- @item
- documentation as generic interface for web server implementations: @uref{https://www.gnu.org/software/guile/manual/html_node/Web-Server.html}
- @item
- examples for usage for creating a web app: @uref{https://www.gnu.org/software/guile/manual/html_node/Web-Examples.html#Web-Examples}
- @end itemize
- @item
- @code{gappserver}
- @itemize
- @item
- git repo: @uref{https://github.com/uberblah/gappserver}
- @item
- description: @emph{"a really tiny guile webserver"} (@uref{https://github.com/uberblah/gappserver})
- @end itemize
- @end itemize
- @node Web clients
- @subsection Web clients
- @itemize
- @item
- @code{web-client-with-cache}
- @itemize
- @item
- repository: @uref{https://labo.planete-kraus.eu/web-client-with-cache.git/}
- @item
- manual: @uref{https://web-client-with-cache.planete-kraus.eu/index.html}
- @item
- description: a caching web client
- @end itemize
- @end itemize
- @node Web frameworks
- @subsection Web frameworks
- @itemize
- @item
- guile's-standard-library's web module for dealing with web stuff:
- @itemize
- @item
- GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/Web.html}
- @end itemize
- @item
- GNU Artanis web application frameweork
- @itemize
- @item
- GNU software page: @uref{https://www.gnu.org/software/artanis/}
- @item
- git repository at GitLab: @uref{https://gitlab.com/NalaGinrut/artanis}
- @item
- official website of the GNU Artanis project: @uref{https://web-artanis.com/}
- @item
- blog post about GNU Artanis: @uref{https://dev.to/heroku/an-ode-to-gnu-artanis-2gn3}
- @item
- manual:
- @itemize
- @item
- @uref{https://www.gnu.org/software/artanis/manual/manual.html}
- @item
- @uref{https://www.gnu.org/software/artanis/manual/html_node/}
- @end itemize
- @item
- blog post about using GNU Artanis in a docker container: @uref{https://nalaginrut.com/archives/2019/09/18/install%20gnu%20artanis%20with%20docker}
- @end itemize
- @item
- SPH web app
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/sph-mn/sph-web-app}
- @end itemize
- @item
- Tekuti
- @itemize
- @item
- git repository at GutHub: @uref{https://github.com/wingo/tekuti}
- @item
- blog post about tekuti: @uref{https://wingolog.org/projects/tekuti/}
- @item
- description: @emph{"Server-side blog engine written in Scheme"} (see repository), web blog using Git as its persistent store
- @end itemize
- @end itemize
- @node Protocols (2)
- @subsection Protocols
- @enumerate
- @item
- @anchor{Web sockets}Web sockets
- @itemize
- @item
- @code{guile-websocket}
- @itemize
- @item
- git repo: @uref{https://git.dthompson.us/guile-websocket.git}
- @item
- description: @emph{"Guile-WebSocket is an implementation of the WebSocket protocol as defined by @uref{https://tools.ietf.org/html/rfc6455, RFC 6455}."} (@uref{https://git.dthompson.us/guile-websocket.git/tree/README?id=c854e0f84a40d972cbd532bbb89c97ca0126a7cf})
- @end itemize
- @end itemize
- @end enumerate
- @node Tooling / Additional libraries
- @subsection Tooling / Additional libraries
- @itemize
- @item
- JSON
- @itemize
- @item
- @code{guile-json}
- @itemize
- @item
- on GitHub: @uref{https://github.com/aconchillo/guile-json}
- @item
- on savannah: @uref{http://savannah.nongnu.org/projects/guile-json/}
- @end itemize
- @end itemize
- @item
- @code{guile-www}
- @itemize
- @item
- git repository at savannah non-gnu: @uref{http://savannah.nongnu.org/projects/guile-www/}
- @item
- git repository at: @uref{https://github.com/guildhall/guile-www}
- @item
- description: @emph{"This is the Guile WWW library, a set of Guile Scheme modules to facilitate HTTP, URL and CGI programming."} (@uref{https://github.com/guildhall/guile-www/tree/263e9632bab062f0ec360c2d54b3bf7d1a4e9ba7})
- @end itemize
- @item
- @code{guile-webutils}
- @itemize
- @item
- git repository at notabug.org: @uref{https://notabug.org/cwebber/guile-webutils}
- @end itemize
- @item
- @code{guile-html}
- @itemize
- @item
- git repo: @uref{https://github.com/TaylanUB/guile-html}
- @item
- description:
- @quotation
- A tiny module to make it less annoying to make and write HTML files using SXML@. Read the code!
- @end quotation
- @end itemize
- @end itemize
- @enumerate
- @item
- @anchor{Authorization and authentication}Authorization and authentication
- @itemize
- @item
- @code{guile-oauth}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/aconchillo/guile-oauth}
- @end itemize
- @item
- @code{guile-jwt}
- @itemize
- @item
- git repository on GitHub: @uref{https://github.com/aconchillo/guile-jwt}
- @end itemize
- @end itemize
- @end enumerate
- @node Static website generators
- @subsection Static website generators
- @itemize
- @item
- @code{guile-haunt}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/guildhall/guile-haunt}
- @end itemize
- @item
- SPH static website generator
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/sph-mn/sph-web-publish}
- @end itemize
- @end itemize
- @node Template engine
- @subsection Template engine
- @itemize
- @item
- Guile's standard library SXML implementation
- @itemize
- @item
- GNU software manual: @uref{https://www.gnu.org/software/guile/manual/html_node/SXML.html}
- @item
- Basically your templates become functions or macros.
- @item
- The structure of your document is kept as Scheme data structures.
- @itemize
- @item
- This avoids having parse the document as a long string into an internal data structure to perform semantic transformations.
- @item
- It enables pattern matching without resorting to things like regular expressions and similar shenanigans.
- @end itemize
- @end itemize
- @end itemize
- @node Interaction with services
- @subsection Interaction with services
- @itemize
- @item
- @code{guile-mastodon}
- @itemize
- @item
- git repository at framagit: @uref{https://framagit.org/prouby/guile-mastodon}
- @item
- documentation at: @uref{https://framagit.org/prouby/guile-mastodon/-/blob/master/doc/guile-mastodon.org}
- @end itemize
- @end itemize
- @node Web application examples
- @subsection Web application examples
- @itemize
- @item
- @code{scheme-todomvc}:
- @itemize
- @item
- git repo: @uref{https://github.com/amirouche/scheme-todomvc}
- @item
- demo: @uref{https://amirouche.github.io/scheme-todomvc/}
- @end itemize
- @end itemize
- @node Web drivers / Selenium
- @subsection Web drivers / Selenium
- @itemize
- @item
- @code{guile-web-driver}
- @itemize
- @item
- git repo: @uref{https://github.com/her01n/guile-web-driver}
- @item
- description: "web driver (selenium) client for guile" (@uref{https://github.com/her01n/guile-web-driver})
- @end itemize
- @end itemize
- @node Window manager
- @section Window manager
- @itemize
- @item
- @code{guile-wm}
- @itemize
- @item
- git repo: @uref{https://github.com/mwitmer/guile-wm}
- @end itemize
- @end itemize
- @node Working with code
- @section Working with code
- @itemize
- @item
- @code{guile-syntax-highlight}
- @itemize
- @item
- website: @uref{https://dthompson.us/projects/guile-syntax-highlight.html}
- @item
- git repository: @uref{https://git.dthompson.us/guile-syntax-highlight.git}
- @end itemize
- @item
- @code{guile-syntax-parse}
- @itemize
- @item
- git repo: @uref{https://gitlab.com/guile-syntax-parse/guile-syntax-parse}
- @item
- description: port of Racket's syntax parse to GNU Guile
- @item
- documentation: see @uref{https://docs.racket-lang.org/syntax-parse-example/index.html?q=syntax%20parse#%28part._.A_syntax-parse_.Crash_.Course%29}
- @end itemize
- @item
- @samp{scheme-lsp-server}
- @itemize
- @item
- git repository: @uref{https://codeberg.org/rgherdt/scheme-lsp-server}
- @item
- description:
- @quotation
- A LSP (Language Server Protocol) server for Scheme.
- This software aims to support several Scheme implementations. To achieve this, the code is designed to contain as much logic as possible in R7RS Scheme, separating implementation-specific code in different directories.
- Note: this code is still in an early development stage and the API may change. Change suggestions are welcome.
- -- @uref{https://codeberg.org/rgherdt/scheme-lsp-server/src/commit/f9492cdf89c0680aeddb58478c0371d7d738d1b1/README.md}
- @end quotation
- @item
- documentation: @uref{https://codeberg.org/rgherdt/scheme-lsp-server/src/branch/master/README.md}
- @end itemize
- @end itemize
- @node Other
- @section Other
- @itemize
- @item
- @code{guile-lib}
- @itemize
- @item
- git repository at non-GNU Savannah: @uref{http://git.savannah.nongnu.org/cgit/guile-lib.git}
- @item
- website at: @uref{https://www.nongnu.org/guile-lib/}
- @item
- description:
- @quotation
- 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{}]
- (@uref{https://www.nongnu.org/guile-lib/})
- @end quotation
- @end itemize
- @item
- Spells
- @itemize
- @item
- git repo: @uref{https://github.com/rotty/spells}
- @item
- description:
- @quotation
- Spells is a collection of R6RS libraries providing features beyond R6RS in a uniform way across supported implementations.
- (@uref{https://github.com/rotty/spells/blob/master/README})
- @end quotation
- @item
- documentation: @uref{http://rotty.xx.vu/software/spells/} (unfortunately 404 currently)
- @end itemize
- @item
- SPH website:
- @itemize
- @item
- It has some Guile library and project descriptions and links.
- @item
- @uref{http://sph.mn/}
- @end itemize
- @item
- Grip
- @itemize
- @item
- website: @uref{http://www.nongnu.org/grip/index.html}
- @item
- project page: @uref{https://savannah.nongnu.org/projects/grip}
- @item
- git repo: @uref{https://git.savannah.nongnu.org/cgit/grip.git}
- @item
- description:
- @quotation
- The idea is similar to the one expressed in Guile-Lib, that is, a place for
- people to collaborate to the development of a common library, though less
- intimidating maybe and, unlike Guile-Lib, Grip will tolerate, under strict
- conditions, some C code: this is notably to support and boost Guile-CV
- floating point operations, at least till Guile has an AOT compiler, able to
- offer similar performance results for fixed size floating points and integer
- operations.
- @end quotation
- (@uref{https://www.nongnu.org/grip/index.html})
- @end itemize
- @end itemize
- @node Unsorted
- @section Unsorted
- @itemize
- @item
- CMOD-PLAY:
- @itemize
- @item
- website: @uref{https://www.gnuvola.org/software/cmod-play/}
- @item
- description: ???
- @end itemize
- @item
- @code{guile-mpd}: @uref{https://github.com/steveerhart/guile-mpd}
- @item
- @code{alias-generator}: @uref{https://gitlab.com/Formbi/alias-generator}
- @item
- @code{bloom-filter}: @uref{https://github.com/ijp/bloom-filter}
- @item
- @code{codejam practices}: @uref{https://github.com/jcca/codejam_practices}
- @item
- @code{guile-agentx}: @uref{https://github.com/securactive/guile-agentx}
- @item
- @code{guile-lfsr}:
- @itemize
- @item
- git repo: @uref{https://gitlab.com/ft/guile-lfsr}
- @item
- description:
- @quotation
- This library contains three scheme modules targetted at GNU Guile. The
- (communication lfsr) module implements linear feedback shift registers as
- infinite streams of bits. LFSRs are used, for example, to generate chip
- sequences in CDMA systems, for synchronising preambles or as pseudo random
- number generators. The module implements LFSRs in both Fibonacci and Galois
- configurations.
- -- @uref{https://gitlab.com/ft/guile-lfsr/-/blob/47724179fc3c0f6f4dddd20d189422b1ac9d3cdd/README}
- @end quotation
- @item
- license: @uref{https://gitlab.com/ft/guile-lfsr/-/blob/47724179fc3c0f6f4dddd20d189422b1ac9d3cdd/LICENCE}
- @end itemize
- @item
- @code{guile-e-series}
- @itemize
- @item
- git repository: @uref{https://gitlab.com/ft/guile-e-series}
- @item
- description:
- @quotation
- E-Series Tools for GNU Guile
- The E-Series are series of preferred numbers, commonly used to specify electro-
- nic parts; mostly resistors, inductors and capacitors. This library implements
- two kinds of lookups: a) Given a value, look up that value in all E-series and
- return the values surrounding the desired value; and b) Given an integer that
- identifies an E-Series and a desired value, return combinations of two parts,
- that approximate the desired value as closely as possible.
- [@dots{}]
- -- @uref{https://gitlab.com/ft/guile-e-series/-/blob/7244035d25fc85898bacb76deacc89568aeff44f/README}
- @end quotation
- @item
- license: @uref{https://gitlab.com/ft/guile-e-series/-/blob/7244035d25fc85898bacb76deacc89568aeff44f/LICENCE}
- @end itemize
- @end itemize
- @node Projects
- @chapter Projects
- @itemize
- @item
- Guile 100
- @itemize
- @item
- description:
- @quotation
- 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.
- (@uref{https://github.com/spk121/guile100/blob/master/README.md})
- @end quotation
- @item
- git repo: @uref{https://github.com/spk121/guile100/}
- @item
- website: @uref{http://www.lonelycactus.com/guile100/html/index.html}
- @end itemize
- @end itemize
- @node Programming paradigm
- @chapter Programming paradigm
- @menu
- * "Object-oriented programming"::
- * Relational programming::
- * Functional programming::
- @end menu
- @node "Object-oriented programming"
- @section "Object-oriented programming"
- @itemize
- @item
- GOOPS
- @itemize
- @item
- GNU software manual page: @uref{https://www.gnu.org/software/guile/manual/html_node/GOOPS.html}
- @end itemize
- @end itemize
- @menu
- * Prototype based::
- @end menu
- @node Prototype based
- @subsection Prototype based
- @itemize
- @item
- Shelf
- @itemize
- @item
- git repo: @uref{https://github.com/mwitmer/Shelf}
- @end itemize
- @end itemize
- @node Relational programming
- @section Relational programming
- @itemize
- @item
- @code{minikanren}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/ijp/minikanren}
- @item
- 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}
- @end itemize
- @end itemize
- @node Functional programming
- @section Functional programming
- @itemize
- @item
- Monad implementations
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/ijp/monad}
- @end itemize
- @item
- Genshou: Extensible effects
- @itemize
- @item
- website: @uref{https://git.sr.ht/~wklew/genshou}
- @item
- description: Implementation of a way to encapsulate side effects based on
- @uref{http://okmij.org/ftp/Haskell/extensible/}. It helps dealing with side effects in a
- functional way.
- @end itemize
- @end itemize
- @node Programming language concepts
- @chapter Programming language concepts
- @menu
- * Pipeline / pipe / chain / threading::
- * State Machines::
- @end menu
- @node Pipeline / pipe / chain / threading
- @section Pipeline / pipe / chain / threading
- @itemize
- @item
- SRFI-197:
- @itemize
- @item
- website: @uref{https://srfi.schemers.org/srfi-197/srfi-197.html}
- @item
- git repository: @uref{https://github.com/ar-nelson/srfi-197}
- @end itemize
- @item
- macro examples:
- @itemize
- @item
- git repository: @uref{https://notabug.org/ZelphirKaltstahl/guile-macros/src/master/threading-pipe-macro/macro-hygienic-syntax-rules.scm}
- @item
- description: simple pipeline macro implementation
- @end itemize
- @item
- @code{guile-threading-macro.scm}
- @itemize
- @item
- gist: @uref{https://gist.github.com/emanon-was/ed12f6023e2d6328334a}
- @item
- description: simple pipeline macro implementation
- @end itemize
- @item
- @code{guile-threading-macros}
- @itemize
- @item
- repository: @uref{https://hg.sr.ht/~bjoli/guile-threading-macros}
- @item
- description: Implements threading macros, which let you choose the position of the threaded argument at each step in the pipeline. Using SRFI-197 is recommended, once it is available in GNU Guile.
- @end itemize
- @end itemize
- @node State Machines
- @section State Machines
- @itemize
- @item
- @samp{Guile-SMC}
- @itemize
- @item
- git repository: @uref{https://github.com/artyom-poptsov/guile-smc}
- @item
- description: @emph{"GNU Guile state machine compiler."} -- @uref{https://github.com/artyom-poptsov/guile-smc/blob/d3a1dda50a64f1ac293d02ece1258006a0219e78/README.org}
- @item
- documentation: @uref{https://github.com/artyom-poptsov/guile-smc/tree/master/doc}
- @end itemize
- @end itemize
- @node Programs
- @chapter Programs
- @menu
- * Finances::
- * Window manager: Window manager (1).
- * Other: Other (6).
- @end menu
- @node Finances
- @section Finances
- @itemize
- @item
- ETRACK
- @itemize
- @item
- git repository: @uref{https://gitlab.com/restio-al-restio/etrack/}
- @item
- description: @emph{"[@dots{}] a simple package to track expenses: query, add, delete, update. You can use ETRACK from Emacs or from the command-line."} (@uref{https://gitlab.com/restio-al-restio/etrack/-/blob/fe360a7f6acdb855046c99b888c9f8a11084051c/README})
- @end itemize
- @end itemize
- @node Window manager (1)
- @section Window manager
- @itemize
- @item
- @code{RPX}
- @itemize
- @item
- repository: @uref{https://www.gnuvola.org/software/rpx/}
- @item
- description: @emph{"This is rpx, a port of ratpoison to Guile Scheme. [@dots{}]"} (@uref{https://www.gnuvola.org/software/rpx/})
- @item
- on nongnu: @uref{https://www.nongnu.org/ratpoison/}
- @end itemize
- @end itemize
- @node Other (6)
- @section Other
- @itemize
- @item
- Starlet
- @itemize
- @item
- repository: @uref{https://github.com/taw10/starlet}
- @item
- description:
- @quotation
- Starlet is an experimental Lisp-based domain-specific language (DSL) for theatrical lighting control. It's based on Guile and sends its DMX output via OLA to almost any type of lighting control interface - DMX, sACN, Art-Net etc.
- -- @uref{https://github.com/taw10/starlet/blob/79df0f8c3289189387a4e07e24e507445ab85a4d/README.md}
- @end quotation
- @end itemize
- @end itemize
- @node Tools
- @chapter Tools
- @menu
- * Notes::
- * Editor support::
- * Project management::
- * Build tools::
- @end menu
- @node Notes
- @section Notes
- @itemize
- @item
- @code{guile-notes}
- @itemize
- @item
- git repo: @uref{https://github.com/Halfwake/guile-notes}
- @item
- description: @emph{"A tool for saving a list of notes."} (@uref{https://github.com/Halfwake/guile-notes})
- @end itemize
- @end itemize
- @node Editor support
- @section Editor support
- @itemize
- @item
- @code{guile.vim}
- @itemize
- @item
- git repo: @uref{https://gitlab.com/HiPhish/guile.vim}
- @item
- description:
- @quotation
- 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.
- (@uref{https://gitlab.com/HiPhish/guile.vim/-/blob/master/README.rst})
- @end quotation
- @end itemize
- @item
- @code{repl.nvim}
- @itemize
- @item
- git repo: @uref{https://gitlab.com/HiPhish/repl.nvim/}
- @item
- description:
- @quotation
- 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.
- (@uref{https://gitlab.com/HiPhish/repl.nvim/-/blob/master/README.rst})
- @end quotation
- @end itemize
- @item
- conjure
- @itemize
- @item
- git repo: @uref{https://github.com/Olical/conjure}
- @item
- description: @emph{"Conjure is an interactive environment for evaluating code within your running program. [@dots{}]"} (@uref{https://github.com/Olical/conjure/blob/4dc7c745618a24799af44797c51af7cc308e42a4/README.adoc})
- @end itemize
- @item
- Emacs Guile support
- @itemize
- @item
- @code{guile-ide}
- @itemize
- @item
- repository: @uref{https://framagit.org/Jeko/guile-ide}
- @item
- description: Emacs configuration file focusing on Guile development
- @end itemize
- @item
- @code{flycheck-guile}
- @item
- @code{geiser-guile}
- @end itemize
- @item
- TODO: other editors support
- @end itemize
- @node Project management
- @section Project management
- @itemize
- @item
- @code{guile-hall}
- @itemize
- @item
- git repository at GitLab: @uref{https://gitlab.com/a-sassmannshausen/guile-hall}
- @end itemize
- @item
- @code{homebrew-guile}: @uref{https://github.com/aconchillo/}
- @item
- @code{guile-debbugs}
- @itemize
- @item
- git repo: @uref{http://savannah.gnu.org/git/?group=guile-debbugs}
- @item
- description: see @uref{http://git.savannah.nongnu.org/cgit/guile-debbugs.git/tree/README.org}
- @end itemize
- @end itemize
- @menu
- * Package managers::
- * Time tracking::
- @end menu
- @node Package managers
- @subsection Package managers
- @itemize
- @item
- GUIX package search
- @itemize
- @item
- website: @uref{https://hpc.guix.info/browse}
- @item
- Search for example for @code{^guile-} to find many Guile libraries and projects.
- @end itemize
- @item
- @code{guildhall}
- @itemize
- @item
- git repository at GitHub: @uref{https://github.com/ijp/guildhall}
- @end itemize
- @item
- Akku
- @itemize
- @item
- website: @uref{https://akkuscm.org/}
- @item
- description:
- @quotation
- Akku.scm is a language package manager for Scheme. It grabs hold of code and vigorously shakes it until it behaves properly.
- (@uref{https://akkuscm.org/})
- @end quotation
- @end itemize
- @end itemize
- @node Time tracking
- @subsection Time tracking
- @itemize
- @item
- GNU Foliot
- @itemize
- @item
- website: @uref{https://www.gnu.org/software/foliot/index.html}
- @item
- git repo: @uref{https://git.savannah.gnu.org/cgit/foliot.git}
- @item
- description:
- @quotation
- GNU Foliot is a small and easy to use time keeping application.
- It can be used in a single user mode or by small organizations. Starting
- with version 0.9.4, it can import other user's database, an essential
- feature for remote collaborators.
- The fields it handles are: a date, who, for whom, what, a duration, whether
- or not to be charged and a description.
- It includes, on the main application screen, a powerful dynamic filters
- criteria mechanism, which lets you visualize, work on and print a subset of
- your time keeping entries.
- A printing templates system allows you to (pre)define, reuse and hence
- quickly generate the pdf files and/or printed reports of your needs.
- A version which will let users export an active filter based subset of their
- time keeping entries is under work.
- @end quotation
- (@uref{https://www.gnu.org/software/foliot/index.html})
- @end itemize
- @end itemize
- @node Build tools
- @section Build tools
- @itemize
- @item
- @code{potato-make}
- @itemize
- @item
- repository: @uref{https://github.com/spk121/potato-make}
- @item
- description:
- @quotation
- Potato Make is a scheme library that aims to simplify the task of
- maintaining, updating, and regenerating programs. It is inspired by the make
- utility in POSIX@. With this library, you can write a build script in Guile
- Scheme.
- -- @uref{https://github.com/spk121/potato-make/blob/5e823c5f5a9a51f9f89681684e77636b32cb5669/README.md}
- @end quotation
- @end itemize
- @end itemize
- @node Blogs
- @chapter Blogs
- @itemize
- @item
- @uref{https://hyper.dev/}
- @item
- @uref{http://wingolog.org/}
- @item
- @uref{http://okmij.org/ftp/Scheme/}
- @item
- blog post about singletons in GNU Guile
- @itemize
- @item
- website: @uref{http://hiphish.github.io/blog/2019/05/24/singleton-objects-in-guile-scheme/}
- @end itemize
- @end itemize
- @node Other (7)
- @chapter Other
- @itemize
- @item
- SPH lib, collection of Guile libraries
- @itemize
- @item
- website: @uref{http://sph.mn/computer/software/sph-lib.html}
- @end itemize
- @item
- C2 Wiki Category Scheme
- @itemize
- @item
- website: @uref{https://proxy.c2.com/cgi/wiki?CategoryScheme}
- @end itemize
- @item
- C2 Wiki Guile Scheme
- @itemize
- @item
- website: @uref{https://proxy.c2.com/cgi/wiki?GuileScheme}
- @end itemize
- @item
- C2 Wiki Scheme Language
- @itemize
- @item
- website: @uref{https://proxy.c2.com/cgi/wiki?SchemeLanguage}
- @end itemize
- @item
- Community Scheme Wiki
- @itemize
- @item
- general
- @itemize
- @item
- website: @uref{http://community.schemewiki.org}
- @end itemize
- @item
- Scheme FAQ
- @itemize
- @item
- website: @uref{http://community.schemewiki.org/?scheme-faq-standards}
- @end itemize
- @end itemize
- @item
- SICP solutions
- @itemize
- @item
- git repo: @uref{https://github.com/alpardal/SICP-guile}
- @item
- description:
- @quotation
- A SICP Study Guide With Exercise Solutions in Guile & Emacs Lisp
- (@uref{https://github.com/alpardal/SICP-guile})
- @end quotation
- @end itemize
- @item
- Guile-BAUX
- @itemize
- @item
- git repo: @uref{https://git.savannah.nongnu.org/cgit/guile-baux.git}
- @item
- description: A loose collection Guile modules:
- @quotation
- Guile-BAUX is a collection of scripts and modules intended to be installed in your
- project’s aux dir (i.e., build-aux/, or equivalent dir specified by AC@math{_CONFIG}@math{_AUX}@math{_DIR} in
- configure.ac). There are modules for:
- @itemize
- @item
- extracting documentation / generating texinfo
- @item
- doing (Scheme) source-source scanning / transforming
- @item
- constructing / displaying modules’ dependency graph
- @item
- generating C boilerplate
- @end itemize
- [@dots{}]
- -- @uref{https://www.gnuvola.org/software/guile-baux/guile-baux.pdf}
- @end quotation
- @end itemize
- @item
- @samp{gclip-select}
- @itemize
- @item
- git repo: @uref{https://git.savannah.nongnu.org/cgit/gclip-select.git}
- @item
- description:
- @quotation
- This is gclip@math{_select}, a small program that allows you to re-select from the text
- lines that were selected at one time or another as the X Primary Selection. This
- is useful when, in X Windows, if you have selected something using the left
- mouse button (as in the convention of the X Windows System) and you later
- select something else but want to get back to the earlier selection.
- Thus this program allows you to quickly switch between frequently copied texts
- for pasting. When you select some text you will notice gclip@math{_select} window adds
- the newly selected text to the list. And you can choose any earlier selection in
- the list window to make it the X11 primary selection again; you can then paste it
- using the middle mouse button.
- -- @uref{https://git.savannah.nongnu.org/cgit/gclip-select.git/tree/README?id=b78bc3cd2d46bba590bddbbe0a7d43823635c249}
- @end quotation
- @end itemize
- @end itemize
- @node Other lists of Guile software
- @chapter Other lists of Guile software
- @itemize
- @item
- official GNU Guile website library list: @uref{https://www.gnu.org/software/guile/libraries/}
- @item
- SPH list: @uref{http://sph.mn/foreign/guile-software.html}
- @end itemize
- @node Videos / Talks / Presentations
- @chapter Videos / Talks / Presentations
- @itemize
- @item
- The GNU Guy:
- @itemize
- @item
- @uref{https://video.hardlimit.com/videos/watch/95ddfcce-0be7-4d2c-a1d4-8017deedfdeb, Sending an Email via GNU Guile}
- @item
- @uref{https://video.hardlimit.com/videos/watch/37d822a2-0eed-4dd6-b230-5008d433503e, A tiny and incomplete intro to Scheme Macros}
- @item
- @uref{https://video.hardlimit.com/videos/watch/14e041a7-59dd-458f-aeca-5aa3e8a87a1e, Reporting A Guile Bug}
- @item
- @uref{https://video.hardlimit.com/videos/watch/playlist/da7e41c8-38df-443f-aef1-d14fc7206fcc, Guile Web Development} (playlist)
- @end itemize
- @end itemize
- This category is still fairly empty. Help filling it with interesting GNU Guile related videos, talks or presentations!
- @bye
|