Skip to content

Instantly share code, notes, and snippets.

@priyadarshan
Forked from fukamachi/gist:3964573
Last active August 29, 2015 14:27
Show Gist options
  • Select an option

  • Save priyadarshan/b38cd8a9e9dfd814c61f to your computer and use it in GitHub Desktop.

Select an option

Save priyadarshan/b38cd8a9e9dfd814c61f 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