Skip to content

Instantly share code, notes, and snippets.

@fukamachi
Created October 27, 2012 13:08
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save fukamachi/3964573 to your computer and use it in GitHub Desktop.
Save fukamachi/3964573 to your computer and use it in GitHub Desktop.
Tutorial of cl-string-complete

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> 
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment