This is a tutorial of cl-string-complete.
CL-USER> (ql:quickload :cl-string-complete)
To load "cl-string-complete":
Install 1 Quicklisp release:
cl-string-complete
; Fetching #<URL "http://beta.quicklisp.org/archive/cl-string-complete/2012-01-07/cl-string-complete-20120107-hg.tgz">
; 5.14KB
==================================================
5,267 bytes in 0.00 seconds (2131.60KB/sec)
; Loading "cl-string-complete"
[package cl-string-complete].
(:CL-STRING-COMPLETE)
CL-USER> (in-package :cl-string-complete)
#<Package "CL-STRING-COMPLETE">
CL-STRING-COMPLETE> (defvar *tree* (make-completion-tree))
*TREE*
CL-STRING-COMPLETE> (defun file-lines (path)
"Open the file designated by PATH and read the list of words, one
per line, and return them in a list."
(with-open-file (s path)
(loop :for word := (read-line s nil nil)
:while word
:collect word)))
FILE-LINES
CL-STRING-COMPLETE> (dolist (word (file-lines #p"/usr/share/dict/words"))
(completion-tree-add *tree* word))
NIL
CL-STRING-COMPLETE> (compute-completions *tree* "eit")
("her")
CL-STRING-COMPLETE> (compute-completions *tree* "quad")
("ded" "dle" "meter" "ra" "rable" "ragenarian" "ragenarious" "ragesimal" "ragintesimal" "ral" "rangle" "rangled" "rangular" "rangularly" "rangularness" "rangulate" "rans" "rant" "rantal" "rantes" "rantile" "rantlike" "rantly" "rat" "rate" "rated" "rateness" "ratic" "ratical" "ratically" "ratics" "ratiferous" "ratojugal" "ratomandibular" "ratosquamosal" "ratrix" "ratum" "rature" "ratus" "rauricular" "rennia" "rennial" "rennially" "rennium" "riad" "rialate" "riannulate" "riarticulate" "riarticulated" "ribasic" "ric" "ricapsular" "ricapsulate" "ricarinate" "ricellular" "ricentennial" "riceps" "richord" "riciliate" "ricinium" "ricipital" "ricone" "ricorn" "ricornous" "ricostate" "ricotyledonous" "ricovariant" "ricrescentic" "ricrescentoid" "ricuspid" "ricuspidal" "ricuspidate" "ricycle" "ricycler" "ricyclist" "ridentate" "ridentated" "riderivative" "ridigitate" "riennial" "riennium" "rienniumutile" "rifarious" "rifariously" "rifid" "rifilar" "rifocal" "rifoil" "rifoliate" "rifoliolate" "rifolious" "rifolium" "riform" "rifrons" "rifrontal" "rifurcate" "rifurcated" "rifurcation" "riga" "rigabled" "rigamist" "rigate" "rigatus" "rigeminal" "rigeminate" "rigeminous" "rigeminum" "rigenarious" "riglandular" "rihybrid" "rijugal" "rijugate" "rijugous" "rilaminar" "rilaminate" "rilateral" "rilaterally" "rilateralness" "rilingual" "riliteral" "rille" "rilled" "rillion" "rillionth" "rilobate" "rilobed" "rilocular" "riloculate" "rilogue" "rilogy" "rimembral" "rimetallic" "rimolecular" "rimum" "rinodal" "rinomial" "rinomical" "rinominal" "rinucleate" "rioxalate" "riparous" "ripartite" "ripartitely" "ripartition" "ripennate" "riphosphate" "riphyllous" "ripinnate" "riplanar" "riplegia" "riplicate" "riplicated" "ripolar" "ripole" "riportico" "riporticus" "ripulmonary" "riquadric" "riradiate" "rireme" "risect" "risection" "riseptate" "riserial" "risetose" "rispiral" "ristearate" "risulcate" "risulcated" "risulphide" "risyllabic" "risyllabical" "risyllable" "risyllabous" "riternate" "ritubercular" "rituberculate" "riurate" "rivalence" "rivalency" "rivalent" "rivalently" "rivalve" "rivalvular" "rivial" "rivious" "rivium" "rivoltine" "roon" "rual" "rum" "rumanal" "rumane" "rumanous" "ruped" "rupedal" "rupedan" "rupedant" "rupedantic" "rupedantical" "rupedate" "rupedation" "rupedism" "rupedous" "ruplane" "ruplator" "ruple" "rupleness" "ruplet" "ruplex" "ruplicate" "ruplication" "ruplicature" "ruplicity" "ruply" "rupole")
CL-STRING-COMPLETE> (time (compute-completions *tree* "quad"))
(COMPUTE-COMPLETIONS *TREE* "quad")
took 193 microseconds (0.000193 seconds) to run.
During that period, and with 4 available CPU cores,
192 microseconds (0.000192 seconds) were spent in user mode
16 microseconds (0.000016 seconds) were spent in system mode
50,384 bytes of memory allocated.
("ded" "dle" "meter" "ra" "rable" "ragenarian" "ragenarious" "ragesimal" "ragintesimal" "ral" "rangle" "rangled" "rangular" "rangularly" "rangularness" "rangulate" "rans" "rant" "rantal" "rantes" "rantile" "rantlike" "rantly" "rat" "rate" "rated" "rateness" "ratic" "ratical" "ratically" "ratics" "ratiferous" "ratojugal" "ratomandibular" "ratosquamosal" "ratrix" "ratum" "rature" "ratus" "rauricular" "rennia" "rennial" "rennially" "rennium" "riad" "rialate" "riannulate" "riarticulate" "riarticulated" "ribasic" "ric" "ricapsular" "ricapsulate" "ricarinate" "ricellular" "ricentennial" "riceps" "richord" "riciliate" "ricinium" "ricipital" "ricone" "ricorn" "ricornous" "ricostate" "ricotyledonous" "ricovariant" "ricrescentic" "ricrescentoid" "ricuspid" "ricuspidal" "ricuspidate" "ricycle" "ricycler" "ricyclist" "ridentate" "ridentated" "riderivative" "ridigitate" "riennial" "riennium" "rienniumutile" "rifarious" "rifariously" "rifid" "rifilar" "rifocal" "rifoil" "rifoliate" "rifoliolate" "rifolious" "rifolium" "riform" "rifrons" "rifrontal" "rifurcate" "rifurcated" "rifurcation" "riga" "rigabled" "rigamist" "rigate" "rigatus" "rigeminal" "rigeminate" "rigeminous" "rigeminum" "rigenarious" "riglandular" "rihybrid" "rijugal" "rijugate" "rijugous" "rilaminar" "rilaminate" "rilateral" "rilaterally" "rilateralness" "rilingual" "riliteral" "rille" "rilled" "rillion" "rillionth" "rilobate" "rilobed" "rilocular" "riloculate" "rilogue" "rilogy" "rimembral" "rimetallic" "rimolecular" "rimum" "rinodal" "rinomial" "rinomical" "rinominal" "rinucleate" "rioxalate" "riparous" "ripartite" "ripartitely" "ripartition" "ripennate" "riphosphate" "riphyllous" "ripinnate" "riplanar" "riplegia" "riplicate" "riplicated" "ripolar" "ripole" "riportico" "riporticus" "ripulmonary" "riquadric" "riradiate" "rireme" "risect" "risection" "riseptate" "riserial" "risetose" "rispiral" "ristearate" "risulcate" "risulcated" "risulphide" "risyllabic" "risyllabical" "risyllable" "risyllabous" "riternate" "ritubercular" "rituberculate" "riurate" "rivalence" "rivalency" "rivalent" "rivalently" "rivalve" "rivalvular" "rivial" "rivious" "rivium" "rivoltine" "roon" "rual" "rum" "rumanal" "rumane" "rumanous" "ruped" "rupedal" "rupedan" "rupedant" "rupedantic" "rupedantical" "rupedate" "rupedation" "rupedism" "rupedous" "ruplane" "ruplator" "ruple" "rupleness" "ruplet" "ruplex" "ruplicate" "ruplication" "ruplicature" "ruplicity" "ruply" "rupole")
CL-STRING-COMPLETE> (length (compute-completions *tree* ""))
235886
CL-STRING-COMPLETE>