Page Not Found | LIPS Scheme
-
+
diff --git a/assets/js/1df93b7f.c9502121.js b/assets/js/1df93b7f.09ef8147.js
similarity index 69%
rename from assets/js/1df93b7f.c9502121.js
rename to assets/js/1df93b7f.09ef8147.js
index 204929dc2..5eafe6d59 100644
--- a/assets/js/1df93b7f.c9502121.js
+++ b/assets/js/1df93b7f.09ef8147.js
@@ -1 +1 @@
-"use strict";(self.webpackChunknew_docs=self.webpackChunknew_docs||[]).push([[237],{9846:(e,n,t)=>{t.d(n,{Z:()=>r});var s=t(7294);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var n=1;n{let{title:n,titleId:t,...r}=e;return s.createElement("svg",i({width:800,height:800,viewBox:"0 0 512 512",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t},r),n?s.createElement("title",{id:t},n):null,s.createElement("path",{d:"m128.81 49.28 27.407 228.157.06.563v216.906l19.94-39.28 20.468 38.155V296.814L168.563 57.5l-39.75-8.22Z",style:{fill:"#ad0000",fillOpacity:1}}),s.createElement("g",{style:{fill:"teal",stroke:"none",strokeWidth:6.4,strokeDasharray:"none"}},s.createElement("path",{d:"M215.374 313.938v31.813l27.564 10.53c-7.04-20.847-16.565-33.66-27.438-42.25-.04-.03-.084-.06-.125-.092z",style:{fill:"teal",stroke:"none",strokeWidth:6.4,strokeDasharray:"none"}}),s.createElement("path",{d:"M473.094 74.406v226.75l-216.938 79.69-40.78-14.97v38.28c23.21 8.03 58.078 6.813 86.25-2.53v-17.563l184.03-67.625 6.125-2.25V74.407h-18.686zM20.5 74.376v239.813l6.125 2.25 110.97 40.78v-19.906l-98.407-36.156V74.376ZM189.28 73.53l25.593 217.782a88.58 88.58 0 0 1 12.188 8.063c6.452 5.097 12.412 11.36 17.75 18.97V109.5c-15.496-17.475-34.402-28.327-55.532-35.97Z",style:{fill:"teal",stroke:"none",strokeWidth:6.4,strokeDasharray:"none"}}),s.createElement("path",{d:"M454.719 43.03c-65.178 17.392-138.354.102-191.22 70.814v208.812c19.795-29.15 45.443-40.866 70.72-46.53 33.914-7.603 66.18-7.163 91.5-27.626l11.75 14.53c-31.256 25.263-68.25 24.386-99.158 31.314-29.295 6.566-53.978 17.63-72.25 63.187l188.657-71.967V43.03ZM57.594 43v242.563l80 30.53V292c-22.504-3.217-45.065-8.633-62.53-26.844l13.5-12.937c12.15 12.667 29.032 17.263 48.28 20.374L110.656 55.03C93.3 51.725 75.492 48.1 57.594 43Z",style:{fill:"teal",stroke:"none",strokeWidth:6.4,strokeDasharray:"none"}})))}},6295:(e,n,t)=>{t.r(n),t.d(n,{default:()=>b});var s=t(512),i=t(7294),r=t(2263),a=t(6040),o=t(5742),l=t(5893);const c=[{description:"Mixing Scheme and JavaScript",code:';; &() is object literal used with quasiquote\n(let ((object `&(:name "LIPS Scheme"\n :version ,lips.version)))\n ;; you can access JavaScript properties\n ;; with dot notation\n (print (string-append object.name\n " "\n object.version))\n ;; you can mix scheme and JavaScript\n (ignore (setTimeout (lambda ()\n (alert (JSON.stringify object)))\n 1000)))'},{description:"Filter function accept, regex or function. Curry is higher order function that create new function with defaults. Pluck return a function that extract fields from an object.",code:'(print (filter number? \'(foo 10 bar 20 baz 30)))\n;; ==> (10 20 30)\n(print (filter #/foo|bar/ \'(foo bar baz quux)))\n;; ==> (foo bar)\n(define foo_or_bar (curry filter #/foo|bar/))\n(print (foo_or_bar \'(foo bar baz)))\n;; ==> (foo bar)\n\n;; &() is object literal used with quasiquote\n(define (make-person first last)\n `&(:fist ,first :last ,last))\n\n(define beatles (map make-person\n \'("John" "Paul" "Ringo" "George")\n \'("Lennon" "McCartney"\n "Starr" "Harrison")))\n;; pluck will extract properties from objects\n(write (map (pluck "fist") beatles))\n(newline)\n;; ==> ("John" "Paul" "Ringo" "George")'},{description:"Automagic async/await like resolving of promises and explicit promise quotation.",code:';; JavaScript regular expression literal\n(define re #/
([^>]+)<\\/h1>/)\n;; --\x3e is a macro that allow chaining\n;; of JavaScript methods calls\n;; no need to use Promises becasue of automagic\n;; promise resolving\n(let ((msg (--\x3e (fetch "https://scheme.org.pl")\n (text)\n (match re)\n 1)))\n (print msg))\n\n;; explicit promise handling with quotation\n(let ((promise (--\x3e \'>(fetch "https://scheme.org.pl")\n (then (lambda (res)\n (res.text)))\n (then (lambda (x)\n (. (x.match re) 1))))))\n (print (await promise)))'},{description:"Hygienic syntax-rules macro and few examples of Numeric Tower.",code:';; show hygienic macro prints expression\n;; and the result value\n(define-syntax show\n (syntax-rules ()\n [(_ expr ...)\n (begin\n (begin\n (write \'expr)\n (display " = ")\n (write expr)\n (newline))\n ...)]))\n\n;; few example of Numeric Tower\n(show (/ 1 2)\n (expt 1/4 1/2)\n (expt 10+10i 1/2)\n (log 2+1/2i)\n (acos -1)\n (+ 1/2 1/4)\n (* 3/4 1/10))'},{description:"Syntax extensions and custom repr allow to create new homoiconic data types.",code:';; Create new class using define-class macro\n(define-class Person Object\n (constructor (lambda (self name)\n (set! self.name name))))\n\n;; add syntax extension\n(set-special! "P:" \'make-person lips.specials.SPLICE)\n\n;; add class representation\n(set-repr! Person\n (lambda (x q)\n (string-append "P:(" (repr x.name q) ")")))\n\n;; function that create new object\n;; for the syntax extension\n(define (make-person name)\n (new Person name))\n\n;; we can use new syntax\n(print P:("jon"))\n;; ==> P:("jon")\n(print (. P:("jon") \'name))\n;; ==> "jon"'},{description:"Interaction with JavaScript DOM and jQuery Terminal (REPL).",code:';; this will query the DOM and ivoke click method\n(let ((selector "button[class*=\\"ColorModeToggle\\"]"))\n (--\x3e (document.querySelector selector)\n (click)))\n\n;; accessing jQuery Terminal, ignore works like begin\n;; but the return value is ignored so the terminal\n;; is not paused when it find a Promise from\n;; Terminal typing animation\n(ignore\n (term.css "--background" "#2E2E2E")\n (term.echo "This is LIPS Scheme" &(:typing #t)))'},{description:"Fibonacci Closure with swap! lisp style macro.",code:";; macro that swap first two variables\n;; with the last two expressions\n(define-macro (swap! a b x y)\n (let ((g_b (gensym)))\n `(let ((,g_b ,y))\n (set! ,a ,b)\n (set! ,b ,g_b))))\n\n;; example taken from Go website\n;; fib creates a function\n;; that return fibonacci numbers\n(define (fib)\n (let ((a 0) (b 1))\n (lambda ()\n (swap! a b b (+ a b))\n a)))\n\n(let ((f (fib)))\n (list (f) (f) (f) (f) (f)))"},{description:"Scheme hygienic macro that creates an assoc list, with macroexpand.",code:';; recursive hygienic syntax-rules macro\n(define-syntax alist\n (syntax-rules ()\n ((_) ())\n ((_ x y z ...)\n (cons (cons x y) (alist z ...)))))\n\n(print (alist "foo" 10 "bar" 20 "baz" 30))\n;; ==> ((foo . 10) (bar . 20) (baz . 30))\n(macroexpand (alist "foo" 10 "bar" 20))\n;; ==> (#:cons (#:cons "foo" 10)\n;; (#:cons (#:cons "bar" 20)\n;; ()))'},{description:"Built in SRFI-139 syntax-parameterize allows creating anamorphic hygienic macros.",code:";; define new syntax parameter\n(define-syntax-parameter it\n (syntax-rules ()\n ((_ . _)\n (syntax-error \"abort used outside of a loop\"))))\n\n;; syntax-rules macro aif adds (it) parameter\n;; to access tested value.\n(define-syntax aif\n (syntax-rules ()\n ((_ cond rest ...)\n (let ((test cond))\n (syntax-parameterize\n ((it (syntax-rules ()\n ((_) test))))\n (if test\n rest ...))))))\n\n;; no need to use assoc two times\n;; or using a variable to hold the value\n(let ((alist '((a . 10) (b . 20))))\n (aif (assoc 'a alist)\n (print (cdr (it)))))"},{description:"JavaScript generators (objects that implement iterator protocol)",code:';; JavaScript generator create using JS eval\n(define gen (self.eval "\n (async function* gen(time, ...args) {\n function delay(time) {\n return new Promise((resolve) => {\n setTimeout(resolve, time);\n });\n }\n for (let x of args) {\n await delay(time);\n yield x;\n }\n })"))\n\n;; iteration over iterator/generator\n(do-iterator\n (i (apply gen 100 (range 10)))\n ()\n (print i))\n(print (iterator->array (gen 100 1 2 3 4 5)))\n;; strings and lists are JavaScript iterators\n(write (iterator->array "hello"))\n(newline)\n(print (iterator->array \'(1 2 3 4)))'},{description:"Y Combinator and inline factorial function.",code:'(define Y\n (lambda (h)\n ((lambda (x) (x x))\n (lambda (g)\n (h (lambda args (apply (g g) args)))))))\n\n((Y (lambda (f)\n (lambda (n)\n (cond ((< n 0)\n (throw (new Error "Invalid factorial")))\n ((zero? n) 1)\n (else (* n (f (- n 1))))))))\n 10)\n;; ==> 3628800'}];function d(e){(0,i.useEffect)((()=>{!function n(){if(e.length){(function(e){return new Promise(((n,t)=>{const s=document.createElement("script");s.onload=n,s.onerror=t,s.src=e,document.head.appendChild(s)}))})(e.shift()).then(n)}}()}),[])}function m(){const{siteConfig:e}=(0,r.Z)();return d(["https://code.jquery.com/jquery-3.7.1.min.js","https://cdn.jsdelivr.net/combine/npm/jquery.terminal/js/jquery.terminal.min.js,npm/js-polyfills/keyboard.js,npm/prismjs/prism.js,npm/jquery.terminal/js/prism.js,npm/prismjs/components/prism-scheme.min.js","https://cdn.jsdelivr.net/npm/@jcubic/lips@beta/lib/js/terminal.js","https://cdn.jsdelivr.net/npm/@jcubic/lips@beta/lib/js/prism.js",`${e.baseUrl}/js/interpreter.js`]),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(o.Z,{children:[(0,l.jsx)("link",{rel:"preconnect",href:"https://cdn.jsdelivr.net"}),(0,l.jsx)("link",{href:"https://cdn.jsdelivr.net/combine/npm/jquery.terminal/css/jquery.terminal.min.css,npm/prismjs/themes/prism-coy.css,npm/terminal-prism/css/prism-coy.css",rel:"stylesheet"}),(0,l.jsx)("link",{href:"https://cdn.jsdelivr.net/gh/jcubic/lips@devel/lib/css/terminal.css",rel:"stylesheet"}),(0,l.jsx)("link",{href:"https://cdn.jsdelivr.net/gh/richleland/pygments-css/monokai.css",rel:"stylesheet"}),(0,l.jsx)("script",{src:"https://cdn.jsdelivr.net/gh/jcubic/lips@devel/dist/lips.min.js","data-bootstrap":"https://cdn.jsdelivr.net/gh/jcubic/lips@devel/dist/std.xcb"})]}),(0,l.jsxs)("div",{className:"intro",children:[(0,l.jsx)("div",{className:"actions-wrapper",children:(0,l.jsxs)("ul",{className:"actions cloak",children:[(0,l.jsx)("li",{className:"zoom-in icon",children:(0,l.jsx)("a",{href:"#",children:"Zoom In"})}),(0,l.jsx)("li",{className:"zoom-out icon",children:(0,l.jsx)("a",{href:"#",children:"Zoom Out"})}),(0,l.jsx)("li",{className:"full-screen",children:(0,l.jsxs)("ul",{children:[(0,l.jsx)("li",{className:"full-screen icon",children:(0,l.jsx)("a",{href:"#",children:"Full Screen"})}),(0,l.jsx)("li",{className:"exit-full-screen icon",children:(0,l.jsx)("a",{href:"#",children:"Exit Full Screen"})})]})})]})}),(0,l.jsx)("div",{className:"term",children:(0,l.jsx)("div",{className:"loader-container",children:(0,l.jsxs)("div",{className:"loader",children:[(0,l.jsx)("div",{children:"."}),(0,l.jsx)("div",{children:".."}),(0,l.jsx)("div",{children:"..."}),(0,l.jsx)("div",{children:"...."}),(0,l.jsx)("div",{children:"....."}),(0,l.jsx)("div",{children:"......"})]})})}),(0,l.jsxs)("div",{className:"examples",children:[(0,l.jsx)("button",{className:"run",children:"run"}),(0,l.jsx)("ul",{className:"list",children:c.map(((e,n)=>(0,l.jsxs)("li",{className:0===n?"active":void 0,children:[(0,l.jsx)("div",{className:"example",children:(0,l.jsx)("pre",{children:e.code})}),(0,l.jsx)("div",{className:"description",children:e.description})]},n)))}),(0,l.jsx)("ul",{className:"pagination",children:c.map(((e,n)=>(0,l.jsx)("li",{className:0===n?"active":void 0,children:(0,l.jsx)("a",{href:"#",children:n+1})},n)))})]})]})]})}var h=t(2503);const p={bookmarkSVG:"bookmarkSVG_kroK"},u=t(9846).Z;function f(){const{siteConfig:e}=(0,r.Z)();return(0,l.jsx)("section",{id:"bookmarklet",children:(0,l.jsxs)("div",{className:"container",children:[(0,l.jsx)(u,{className:p.bookmarkSVG,role:"img"}),(0,l.jsx)(h.Z,{as:"h3",children:"Bookmarklet"}),(0,l.jsx)(o.Z,{children:(0,l.jsx)("script",{src:`${e.baseUrl}/js/bookmark.js`})}),(0,l.jsxs)("p",{children:["When you're learning Scheme language, you can run the REPL directly on any page that have Scheme tutorial you're learning from. It even work with PDF files and new empty tab (at least in Chrome). Drag this link ",(0,l.jsx)("a",{id:"bookmark_link",children:"LIPS REPL"})," to your bookmarks. When you click on the bookmark it will run the interpreter. You can also just click the link."]})," ",(0,l.jsx)("p",{children:"The bookmark can also be used to add REPL to your LIPS Web application."})," ",(0,l.jsxs)("p",{children:["It may also not work no sites that are protected with"," ",(0,l.jsx)("a",{href:"https://en.wikipedia.org/wiki/Content_Security_Policy",children:"Content Security Policy"})]})]})})}const x={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function j(){const{siteConfig:e}=(0,r.Z)(),n=(0,i.useRef)();return(0,i.useEffect)((()=>{!function e(){window.lips?n.current.innerText=window.lips.version:setTimeout(e,100)}()}),[]),(0,l.jsx)("header",{className:(0,s.Z)("hero hero--primary",x.heroBanner),children:(0,l.jsxs)("div",{className:"container",children:[(0,l.jsxs)(h.Z,{as:"h1",className:"hero__title",children:[e.title," v.",(0,l.jsx)("span",{ref:n})]}),(0,l.jsx)("p",{className:"hero__subtitle",children:e.tagline}),(0,l.jsx)(m,{})]})})}function b(){const{siteConfig:e}=(0,r.Z)();return(0,l.jsxs)(a.Z,{title:e.title,description:e.tagline,children:[(0,l.jsx)(j,{}),(0,l.jsx)("main",{children:(0,l.jsx)(f,{})})]})}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunknew_docs=self.webpackChunknew_docs||[]).push([[237],{9846:(e,n,t)=>{t.d(n,{Z:()=>r});var s=t(7294);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var n=1;n{let{title:n,titleId:t,...r}=e;return s.createElement("svg",i({width:800,height:800,viewBox:"0 0 512 512",xmlns:"http://www.w3.org/2000/svg","aria-labelledby":t},r),n?s.createElement("title",{id:t},n):null,s.createElement("path",{d:"m128.81 49.28 27.407 228.157.06.563v216.906l19.94-39.28 20.468 38.155V296.814L168.563 57.5l-39.75-8.22Z",style:{fill:"#ad0000",fillOpacity:1}}),s.createElement("g",{style:{fill:"teal",stroke:"none",strokeWidth:6.4,strokeDasharray:"none"}},s.createElement("path",{d:"M215.374 313.938v31.813l27.564 10.53c-7.04-20.847-16.565-33.66-27.438-42.25-.04-.03-.084-.06-.125-.092z",style:{fill:"teal",stroke:"none",strokeWidth:6.4,strokeDasharray:"none"}}),s.createElement("path",{d:"M473.094 74.406v226.75l-216.938 79.69-40.78-14.97v38.28c23.21 8.03 58.078 6.813 86.25-2.53v-17.563l184.03-67.625 6.125-2.25V74.407h-18.686zM20.5 74.376v239.813l6.125 2.25 110.97 40.78v-19.906l-98.407-36.156V74.376ZM189.28 73.53l25.593 217.782a88.58 88.58 0 0 1 12.188 8.063c6.452 5.097 12.412 11.36 17.75 18.97V109.5c-15.496-17.475-34.402-28.327-55.532-35.97Z",style:{fill:"teal",stroke:"none",strokeWidth:6.4,strokeDasharray:"none"}}),s.createElement("path",{d:"M454.719 43.03c-65.178 17.392-138.354.102-191.22 70.814v208.812c19.795-29.15 45.443-40.866 70.72-46.53 33.914-7.603 66.18-7.163 91.5-27.626l11.75 14.53c-31.256 25.263-68.25 24.386-99.158 31.314-29.295 6.566-53.978 17.63-72.25 63.187l188.657-71.967V43.03ZM57.594 43v242.563l80 30.53V292c-22.504-3.217-45.065-8.633-62.53-26.844l13.5-12.937c12.15 12.667 29.032 17.263 48.28 20.374L110.656 55.03C93.3 51.725 75.492 48.1 57.594 43Z",style:{fill:"teal",stroke:"none",strokeWidth:6.4,strokeDasharray:"none"}})))}},6295:(e,n,t)=>{t.r(n),t.d(n,{default:()=>b});var s=t(512),i=t(7294),r=t(2263),a=t(6040),o=t(5742),l=t(5893);const c=[{description:"Mixing Scheme and JavaScript",code:';; &() is object literal used with quasiquote\n(let ((object `&(:name "LIPS Scheme"\n :version ,lips.version)))\n ;; you can access JavaScript properties\n ;; with dot notation\n (print (string-append object.name\n " "\n object.version))\n ;; you can mix scheme and JavaScript\n (ignore (setTimeout (lambda ()\n (alert (JSON.stringify object)))\n 1000)))'},{description:"Filter function accept, regex or function. Curry is higher order function that create new function with defaults. Pluck return a function that extract fields from an object.",code:'(print (filter number? \'(foo 10 bar 20 baz 30)))\n;; ==> (10 20 30)\n(print (filter #/foo|bar/ \'(foo bar baz quux)))\n;; ==> (foo bar)\n(define foo_or_bar (curry filter #/foo|bar/))\n(print (foo_or_bar \'(foo bar baz)))\n;; ==> (foo bar)\n\n;; &() is object literal used with quasiquote\n(define (make-person first last)\n `&(:fist ,first :last ,last))\n\n(define beatles (map make-person\n \'("John" "Paul" "Ringo" "George")\n \'("Lennon" "McCartney"\n "Starr" "Harrison")))\n;; pluck will extract properties from objects\n(write (map (pluck "fist") beatles))\n(newline)\n;; ==> ("John" "Paul" "Ringo" "George")'},{description:"Automagic async/await like resolving of promises and explicit promise quotation.",code:';; JavaScript regular expression literal\n(define re #/
([^>]+)<\\/h1>/)\n;; --\x3e is a macro that allow chaining\n;; of JavaScript methods calls\n;; no need to use Promises becasue of automagic\n;; promise resolving\n(let ((msg (--\x3e (fetch "https://scheme.org.pl")\n (text)\n (match re)\n 1)))\n (print msg))\n\n;; explicit promise handling with quotation\n(let ((promise (--\x3e \'>(fetch "https://scheme.org.pl")\n (then (lambda (res)\n (res.text)))\n (then (lambda (x)\n (. (x.match re) 1))))))\n (print (await promise)))'},{description:"Hygienic syntax-rules macro and few examples of Numeric Tower.",code:';; show hygienic macro prints expression\n;; and the result value\n(define-syntax show\n (syntax-rules ()\n [(_ expr ...)\n (begin\n (begin\n (write \'expr)\n (display " = ")\n (write expr)\n (newline))\n ...)]))\n\n;; few example of Numeric Tower\n(show (/ 1 2)\n (expt 1/4 1/2)\n (expt 10+10i 1/2)\n (log 2+1/2i)\n (acos -1)\n (+ 1/2 1/4)\n (* 3/4 1/10))'},{description:"Syntax extensions and custom repr allow to create new homoiconic data types.",code:';; Create new class using define-class macro\n(define-class Person Object\n (constructor (lambda (self name)\n (set! self.name name))))\n\n;; add syntax extension\n(set-special! "P:" \'make-person lips.specials.SPLICE)\n\n;; add class representation\n(set-repr! Person\n (lambda (x q)\n (string-append "P:(" (repr x.name q) ")")))\n\n;; function that create new object\n;; for the syntax extension\n(define (make-person name)\n (new Person name))\n\n;; we can use new syntax\n(print P:("jon"))\n;; ==> P:("jon")\n(print (. P:("jon") \'name))\n;; ==> "jon"'},{description:"Interaction with JavaScript DOM and jQuery Terminal (REPL).",code:';; this will query the DOM and ivoke click method\n(let ((selector "button[class*=\\"ColorModeToggle\\"]"))\n (--\x3e (document.querySelector selector)\n (click)))\n\n;; accessing jQuery Terminal, ignore works like begin\n;; but the return value is ignored so the terminal\n;; is not paused when it find a Promise from\n;; Terminal typing animation\n(ignore\n (term.css "--background" "#2E2E2E")\n (term.echo "This is LIPS Scheme" &(:typing #t)))'},{description:"Fibonacci Closure with swap! lisp style macro.",code:";; macro that swap first two variables\n;; with the last two expressions\n(define-macro (swap! a b x y)\n (let ((g_b (gensym)))\n `(let ((,g_b ,y))\n (set! ,a ,b)\n (set! ,b ,g_b))))\n\n;; example taken from Go website\n;; fib creates a function\n;; that return fibonacci numbers\n(define (fib)\n (let ((a 0) (b 1))\n (lambda ()\n (swap! a b b (+ a b))\n a)))\n\n(let ((f (fib)))\n (list (f) (f) (f) (f) (f)))"},{description:"Scheme hygienic macro that creates an assoc list, with macroexpand.",code:';; recursive hygienic syntax-rules macro\n(define-syntax alist\n (syntax-rules ()\n ((_) ())\n ((_ x y z ...)\n (cons (cons x y) (alist z ...)))))\n\n(print (alist "foo" 10 "bar" 20 "baz" 30))\n;; ==> ((foo . 10) (bar . 20) (baz . 30))\n(macroexpand (alist "foo" 10 "bar" 20))\n;; ==> (#:cons (#:cons "foo" 10)\n;; (#:cons (#:cons "bar" 20)\n;; ()))'},{description:"Built in SRFI-139 syntax-parameterize allows creating anamorphic hygienic macros.",code:";; define new syntax parameter\n(define-syntax-parameter it\n (syntax-rules ()\n ((_ . _)\n (syntax-error \"abort used outside of a loop\"))))\n\n;; syntax-rules macro aif adds (it) parameter\n;; to access tested value.\n(define-syntax aif\n (syntax-rules ()\n ((_ cond rest ...)\n (let ((test cond))\n (syntax-parameterize\n ((it (syntax-rules ()\n ((_) test))))\n (if test\n rest ...))))))\n\n;; no need to use assoc two times\n;; or using a variable to hold the value\n(let ((alist '((a . 10) (b . 20))))\n (aif (assoc 'a alist)\n (print (cdr (it)))))"},{description:"JavaScript generators (objects that implement iterator protocol)",code:';; JavaScript generator create using JS eval\n(define gen (self.eval "\n (async function* gen(time, ...args) {\n function delay(time) {\n return new Promise((resolve) => {\n setTimeout(resolve, time);\n });\n }\n for (let x of args) {\n await delay(time);\n yield x;\n }\n })"))\n\n;; iteration over iterator/generator\n(do-iterator\n (i (apply gen 100 (range 10)))\n ()\n (print i))\n(print (iterator->array (gen 100 1 2 3 4 5)))\n;; strings and lists are JavaScript iterators\n(write (iterator->array "hello"))\n(newline)\n(print (iterator->array \'(1 2 3 4)))'},{description:"Y Combinator and inline factorial function.",code:'(define Y\n (lambda (h)\n ((lambda (x) (x x))\n (lambda (g)\n (h (lambda args (apply (g g) args)))))))\n\n((Y (lambda (f)\n (lambda (n)\n (cond ((< n 0)\n (throw (new Error "Invalid factorial")))\n ((zero? n) 1)\n (else (* n (f (- n 1))))))))\n 10)\n;; ==> 3628800'}];function d(e){(0,i.useEffect)((()=>{!function n(){if(e.length){(function(e){return new Promise(((n,t)=>{const s=document.createElement("script");s.onload=n,s.onerror=t,s.src=e,document.head.appendChild(s)}))})(e.shift()).then(n)}}()}),[])}function m(){const{siteConfig:e}=(0,r.Z)();return d(["https://code.jquery.com/jquery-3.7.1.min.js","https://cdn.jsdelivr.net/combine/npm/jquery.terminal/js/jquery.terminal.min.js,npm/js-polyfills/keyboard.js,npm/prismjs/prism.js,npm/jquery.terminal/js/prism.js,npm/prismjs/components/prism-scheme.min.js","https://cdn.jsdelivr.net/npm/@jcubic/lips@beta/lib/js/terminal.js","https://cdn.jsdelivr.net/npm/@jcubic/lips@beta/lib/js/prism.js",`${e.baseUrl}js/interpreter.js`]),(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(o.Z,{children:[(0,l.jsx)("link",{rel:"preconnect",href:"https://cdn.jsdelivr.net"}),(0,l.jsx)("link",{href:"https://cdn.jsdelivr.net/combine/npm/jquery.terminal/css/jquery.terminal.min.css,npm/prismjs/themes/prism-coy.css,npm/terminal-prism/css/prism-coy.css",rel:"stylesheet"}),(0,l.jsx)("link",{href:"https://cdn.jsdelivr.net/gh/jcubic/lips@devel/lib/css/terminal.css",rel:"stylesheet"}),(0,l.jsx)("link",{href:"https://cdn.jsdelivr.net/gh/richleland/pygments-css/monokai.css",rel:"stylesheet"}),(0,l.jsx)("script",{src:"https://cdn.jsdelivr.net/gh/jcubic/lips@devel/dist/lips.min.js","data-bootstrap":"https://cdn.jsdelivr.net/gh/jcubic/lips@devel/dist/std.xcb"})]}),(0,l.jsxs)("div",{className:"intro",children:[(0,l.jsx)("div",{className:"actions-wrapper",children:(0,l.jsxs)("ul",{className:"actions cloak",children:[(0,l.jsx)("li",{className:"zoom-in icon",children:(0,l.jsx)("a",{href:"#",children:"Zoom In"})}),(0,l.jsx)("li",{className:"zoom-out icon",children:(0,l.jsx)("a",{href:"#",children:"Zoom Out"})}),(0,l.jsx)("li",{className:"full-screen",children:(0,l.jsxs)("ul",{children:[(0,l.jsx)("li",{className:"full-screen icon",children:(0,l.jsx)("a",{href:"#",children:"Full Screen"})}),(0,l.jsx)("li",{className:"exit-full-screen icon",children:(0,l.jsx)("a",{href:"#",children:"Exit Full Screen"})})]})})]})}),(0,l.jsx)("div",{className:"term",children:(0,l.jsx)("div",{className:"loader-container",children:(0,l.jsxs)("div",{className:"loader",children:[(0,l.jsx)("div",{children:"."}),(0,l.jsx)("div",{children:".."}),(0,l.jsx)("div",{children:"..."}),(0,l.jsx)("div",{children:"...."}),(0,l.jsx)("div",{children:"....."}),(0,l.jsx)("div",{children:"......"})]})})}),(0,l.jsxs)("div",{className:"examples",children:[(0,l.jsx)("button",{className:"run",children:"run"}),(0,l.jsx)("ul",{className:"list",children:c.map(((e,n)=>(0,l.jsxs)("li",{className:0===n?"active":void 0,children:[(0,l.jsx)("div",{className:"example",children:(0,l.jsx)("pre",{children:e.code})}),(0,l.jsx)("div",{className:"description",children:e.description})]},n)))}),(0,l.jsx)("ul",{className:"pagination",children:c.map(((e,n)=>(0,l.jsx)("li",{className:0===n?"active":void 0,children:(0,l.jsx)("a",{href:"#",children:n+1})},n)))})]})]})]})}var h=t(2503);const p={bookmarkSVG:"bookmarkSVG_kroK"},u=t(9846).Z;function f(){const{siteConfig:e}=(0,r.Z)();return(0,l.jsx)("section",{id:"bookmarklet",children:(0,l.jsxs)("div",{className:"container",children:[(0,l.jsx)(u,{className:p.bookmarkSVG,role:"img"}),(0,l.jsx)(h.Z,{as:"h3",children:"Bookmarklet"}),(0,l.jsx)(o.Z,{children:(0,l.jsx)("script",{src:`${e.baseUrl}/js/bookmark.js`})}),(0,l.jsxs)("p",{children:["When you're learning Scheme language, you can run the REPL directly on any page that have Scheme tutorial you're learning from. It even work with PDF files and new empty tab (at least in Chrome). Drag this link ",(0,l.jsx)("a",{id:"bookmark_link",children:"LIPS REPL"})," to your bookmarks. When you click on the bookmark it will run the interpreter. You can also just click the link."]})," ",(0,l.jsx)("p",{children:"The bookmark can also be used to add REPL to your LIPS Web application."})," ",(0,l.jsxs)("p",{children:["It may also not work no sites that are protected with"," ",(0,l.jsx)("a",{href:"https://en.wikipedia.org/wiki/Content_Security_Policy",children:"Content Security Policy"})]})]})})}const x={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function j(){const{siteConfig:e}=(0,r.Z)(),n=(0,i.useRef)();return(0,i.useEffect)((()=>{!function e(){window.lips?n.current.innerText=window.lips.version:setTimeout(e,100)}()}),[]),(0,l.jsx)("header",{className:(0,s.Z)("hero hero--primary",x.heroBanner),children:(0,l.jsxs)("div",{className:"container",children:[(0,l.jsxs)(h.Z,{as:"h1",className:"hero__title",children:[e.title," v.",(0,l.jsx)("span",{ref:n})]}),(0,l.jsx)("p",{className:"hero__subtitle",children:e.tagline}),(0,l.jsx)(m,{})]})})}function b(){const{siteConfig:e}=(0,r.Z)();return(0,l.jsxs)(a.Z,{title:e.title,description:e.tagline,children:[(0,l.jsx)(j,{}),(0,l.jsx)("main",{children:(0,l.jsx)(f,{})})]})}}}]);
\ No newline at end of file
diff --git a/assets/js/runtime~main.b1a7c9c7.js b/assets/js/runtime~main.b1a7c9c7.js
deleted file mode 100644
index 9d2e499cd..000000000
--- a/assets/js/runtime~main.b1a7c9c7.js
+++ /dev/null
@@ -1 +0,0 @@
-(()=>{"use strict";var e,a,t,r,c,f={},o={};function d(e){var a=o[e];if(void 0!==a)return a.exports;var t=o[e]={id:e,loaded:!1,exports:{}};return f[e].call(t.exports,t,t.exports,d),t.loaded=!0,t.exports}d.m=f,d.c=o,e=[],d.O=(a,t,r,c)=>{if(!t){var f=1/0;for(i=0;i=c)&&Object.keys(d.O).every((e=>d.O[e](t[b])))?t.splice(b--,1):(o=!1,c0&&e[i-1][2]>c;i--)e[i]=e[i-1];e[i]=[t,r,c]},d.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return d.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var c=Object.create(null);d.r(c);var f={};a=a||[null,t({}),t([]),t(t)];for(var o=2&r&&e;"object"==typeof o&&!~a.indexOf(o);o=t(o))Object.getOwnPropertyNames(o).forEach((a=>f[a]=()=>e[a]));return f.default=()=>e,d.d(c,f),c},d.d=(e,a)=>{for(var t in a)d.o(a,t)&&!d.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((a,t)=>(d.f[t](e,a),a)),[])),d.u=e=>"assets/js/"+({9:"071f70b4",13:"01a85c17",53:"935f2afb",70:"f196f4a4",85:"1f391b9e",89:"a6aa9e1f",103:"ccc49370",141:"321ee6e0",193:"f55d3e7a",237:"1df93b7f",242:"c71491fd",296:"ddb0995b",326:"df866281",347:"1a2006b5",368:"a94703ab",414:"393be207",460:"9abc7bc7",504:"822bd8ab",518:"a7bd4aaa",535:"814f3328",587:"ddbfd18b",589:"5c868d36",607:"533a09ca",608:"9e4087bc",610:"6875c492",616:"ff6928b3",619:"d6516dc4",661:"5e95c892",663:"af95cafa",671:"0e384e19",682:"c36ecdcb",755:"e44a2883",792:"dff1c289",817:"14eb3368",818:"1e4232ab",859:"18c41134",885:"7f5460c2",918:"17896441"}[e]||e)+"."+{9:"87372986",13:"1d6bda03",53:"f738ebfa",70:"1a5f2321",85:"7a84b45b",89:"8e1e7c18",103:"4cec8659",141:"91ace968",193:"01398fd8",237:"c9502121",242:"b6cfb1ed",296:"487b2c07",326:"70766307",347:"c23ea8b3",368:"b207b1ef",404:"4afbde99",414:"135d334d",460:"bb874be7",504:"53c6d3ce",518:"39e33d3e",535:"8fe04587",587:"7af39a58",589:"cdc7fc93",607:"a81854c4",608:"563d300f",610:"c45f48fb",616:"f1df3cc8",619:"087672b5",661:"c37a1170",663:"6aca09d3",671:"a389b60d",677:"af8b943c",682:"6d8a1687",755:"26050632",772:"f7afe75c",792:"e715483d",817:"df4c4179",818:"3fe03de7",859:"e1ea9481",885:"f2410dad",918:"6ab4aec7"}[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},c="new-docs:",d.l=(e,a,t,f)=>{if(r[e])r[e].push(a);else{var o,b;if(void 0!==t)for(var n=document.getElementsByTagName("script"),i=0;i{o.onerror=o.onload=null,clearTimeout(s);var c=r[e];if(delete r[e],o.parentNode&&o.parentNode.removeChild(o),c&&c.forEach((e=>e(t))),a)return a(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),b&&document.head.appendChild(o)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.p="/lips-website/",d.gca=function(e){return e={17896441:"918","071f70b4":"9","01a85c17":"13","935f2afb":"53",f196f4a4:"70","1f391b9e":"85",a6aa9e1f:"89",ccc49370:"103","321ee6e0":"141",f55d3e7a:"193","1df93b7f":"237",c71491fd:"242",ddb0995b:"296",df866281:"326","1a2006b5":"347",a94703ab:"368","393be207":"414","9abc7bc7":"460","822bd8ab":"504",a7bd4aaa:"518","814f3328":"535",ddbfd18b:"587","5c868d36":"589","533a09ca":"607","9e4087bc":"608","6875c492":"610",ff6928b3:"616",d6516dc4:"619","5e95c892":"661",af95cafa:"663","0e384e19":"671",c36ecdcb:"682",e44a2883:"755",dff1c289:"792","14eb3368":"817","1e4232ab":"818","18c41134":"859","7f5460c2":"885"}[e]||e,d.p+d.u(e)},(()=>{var e={303:0,532:0};d.f.j=(a,t)=>{var r=d.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(303|532)$/.test(a))e[a]=0;else{var c=new Promise(((t,c)=>r=e[a]=[t,c]));t.push(r[2]=c);var f=d.p+d.u(a),o=new Error;d.l(f,(t=>{if(d.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var c=t&&("load"===t.type?"missing":t.type),f=t&&t.target&&t.target.src;o.message="Loading chunk "+a+" failed.\n("+c+": "+f+")",o.name="ChunkLoadError",o.type=c,o.request=f,r[1](o)}}),"chunk-"+a,a)}},d.O.j=a=>0===e[a];var a=(a,t)=>{var r,c,f=t[0],o=t[1],b=t[2],n=0;if(f.some((a=>0!==e[a]))){for(r in o)d.o(o,r)&&(d.m[r]=o[r]);if(b)var i=b(d)}for(a&&a(t);n{"use strict";var e,a,t,r,f,c={},d={};function o(e){var a=d[e];if(void 0!==a)return a.exports;var t=d[e]={id:e,loaded:!1,exports:{}};return c[e].call(t.exports,t,t.exports,o),t.loaded=!0,t.exports}o.m=c,o.c=d,e=[],o.O=(a,t,r,f)=>{if(!t){var c=1/0;for(i=0;i=f)&&Object.keys(o.O).every((e=>o.O[e](t[b])))?t.splice(b--,1):(d=!1,f0&&e[i-1][2]>f;i--)e[i]=e[i-1];e[i]=[t,r,f]},o.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return o.d(a,{a:a}),a},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,o.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var f=Object.create(null);o.r(f);var c={};a=a||[null,t({}),t([]),t(t)];for(var d=2&r&&e;"object"==typeof d&&!~a.indexOf(d);d=t(d))Object.getOwnPropertyNames(d).forEach((a=>c[a]=()=>e[a]));return c.default=()=>e,o.d(f,c),f},o.d=(e,a)=>{for(var t in a)o.o(a,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:a[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((a,t)=>(o.f[t](e,a),a)),[])),o.u=e=>"assets/js/"+({9:"071f70b4",13:"01a85c17",53:"935f2afb",70:"f196f4a4",85:"1f391b9e",89:"a6aa9e1f",103:"ccc49370",141:"321ee6e0",193:"f55d3e7a",237:"1df93b7f",242:"c71491fd",296:"ddb0995b",326:"df866281",347:"1a2006b5",368:"a94703ab",414:"393be207",460:"9abc7bc7",504:"822bd8ab",518:"a7bd4aaa",535:"814f3328",587:"ddbfd18b",589:"5c868d36",607:"533a09ca",608:"9e4087bc",610:"6875c492",616:"ff6928b3",619:"d6516dc4",661:"5e95c892",663:"af95cafa",671:"0e384e19",682:"c36ecdcb",755:"e44a2883",792:"dff1c289",817:"14eb3368",818:"1e4232ab",859:"18c41134",885:"7f5460c2",918:"17896441"}[e]||e)+"."+{9:"87372986",13:"1d6bda03",53:"f738ebfa",70:"1a5f2321",85:"7a84b45b",89:"8e1e7c18",103:"4cec8659",141:"91ace968",193:"01398fd8",237:"09ef8147",242:"b6cfb1ed",296:"487b2c07",326:"70766307",347:"c23ea8b3",368:"b207b1ef",404:"4afbde99",414:"135d334d",460:"bb874be7",504:"53c6d3ce",518:"39e33d3e",535:"8fe04587",587:"7af39a58",589:"cdc7fc93",607:"a81854c4",608:"563d300f",610:"c45f48fb",616:"f1df3cc8",619:"087672b5",661:"c37a1170",663:"6aca09d3",671:"a389b60d",677:"af8b943c",682:"6d8a1687",755:"26050632",772:"f7afe75c",792:"e715483d",817:"df4c4179",818:"3fe03de7",859:"e1ea9481",885:"f2410dad",918:"6ab4aec7"}[e]+".js",o.miniCssF=e=>{},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),r={},f="new-docs:",o.l=(e,a,t,c)=>{if(r[e])r[e].push(a);else{var d,b;if(void 0!==t)for(var n=document.getElementsByTagName("script"),i=0;i{d.onerror=d.onload=null,clearTimeout(s);var f=r[e];if(delete r[e],d.parentNode&&d.parentNode.removeChild(d),f&&f.forEach((e=>e(t))),a)return a(t)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=l.bind(null,d.onerror),d.onload=l.bind(null,d.onload),b&&document.head.appendChild(d)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.p="/lips-website/",o.gca=function(e){return e={17896441:"918","071f70b4":"9","01a85c17":"13","935f2afb":"53",f196f4a4:"70","1f391b9e":"85",a6aa9e1f:"89",ccc49370:"103","321ee6e0":"141",f55d3e7a:"193","1df93b7f":"237",c71491fd:"242",ddb0995b:"296",df866281:"326","1a2006b5":"347",a94703ab:"368","393be207":"414","9abc7bc7":"460","822bd8ab":"504",a7bd4aaa:"518","814f3328":"535",ddbfd18b:"587","5c868d36":"589","533a09ca":"607","9e4087bc":"608","6875c492":"610",ff6928b3:"616",d6516dc4:"619","5e95c892":"661",af95cafa:"663","0e384e19":"671",c36ecdcb:"682",e44a2883:"755",dff1c289:"792","14eb3368":"817","1e4232ab":"818","18c41134":"859","7f5460c2":"885"}[e]||e,o.p+o.u(e)},(()=>{var e={303:0,532:0};o.f.j=(a,t)=>{var r=o.o(e,a)?e[a]:void 0;if(0!==r)if(r)t.push(r[2]);else if(/^(303|532)$/.test(a))e[a]=0;else{var f=new Promise(((t,f)=>r=e[a]=[t,f]));t.push(r[2]=f);var c=o.p+o.u(a),d=new Error;o.l(c,(t=>{if(o.o(e,a)&&(0!==(r=e[a])&&(e[a]=void 0),r)){var f=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;d.message="Loading chunk "+a+" failed.\n("+f+": "+c+")",d.name="ChunkLoadError",d.type=f,d.request=c,r[1](d)}}),"chunk-"+a,a)}},o.O.j=a=>0===e[a];var a=(a,t)=>{var r,f,c=t[0],d=t[1],b=t[2],n=0;if(c.some((a=>0!==e[a]))){for(r in d)o.o(d,r)&&(o.m[r]=d[r]);if(b)var i=b(o)}for(a&&a(t);nArchive | LIPS Scheme
-
+
diff --git a/blog/index.html b/blog/index.html
index c5a86c4fa..9b9fae55a 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -5,7 +5,7 @@
Blog | LIPS Scheme
-
+
diff --git a/blog/tags/hello/index.html b/blog/tags/hello/index.html
index ae54f2f43..d98abaf5b 100644
--- a/blog/tags/hello/index.html
+++ b/blog/tags/hello/index.html
@@ -5,7 +5,7 @@
One post tagged with "hello" | LIPS Scheme
-
+
diff --git a/blog/tags/index.html b/blog/tags/index.html
index 32e697cf5..59784a0ca 100644
--- a/blog/tags/index.html
+++ b/blog/tags/index.html
@@ -5,7 +5,7 @@
Tags | LIPS Scheme
-
+
diff --git a/blog/tags/lips/index.html b/blog/tags/lips/index.html
index d1bdacfbb..8b1e306a9 100644
--- a/blog/tags/lips/index.html
+++ b/blog/tags/lips/index.html
@@ -5,7 +5,7 @@
One post tagged with "lips" | LIPS Scheme
-
+
diff --git a/blog/welcome/index.html b/blog/welcome/index.html
index 1f1470b2b..47a78cd4f 100644
--- a/blog/welcome/index.html
+++ b/blog/welcome/index.html
@@ -5,7 +5,7 @@
Welcome | LIPS Scheme
-
+
diff --git a/docs/category/tutorial---basics/index.html b/docs/category/tutorial---basics/index.html
index c7e718397..1a2702275 100644
--- a/docs/category/tutorial---basics/index.html
+++ b/docs/category/tutorial---basics/index.html
@@ -5,7 +5,7 @@
Tutorial - Basics | LIPS Scheme
-
+
diff --git a/docs/category/tutorial---extras/index.html b/docs/category/tutorial---extras/index.html
index 1777ee5a3..ef7383d46 100644
--- a/docs/category/tutorial---extras/index.html
+++ b/docs/category/tutorial---extras/index.html
@@ -5,7 +5,7 @@
Tutorial - Extras | LIPS Scheme
-
+
diff --git a/docs/intro/index.html b/docs/intro/index.html
index 326008c46..f4bd2bd73 100644
--- a/docs/intro/index.html
+++ b/docs/intro/index.html
@@ -5,7 +5,7 @@
Tutorial Intro | LIPS Scheme
-
+
diff --git a/docs/tutorial-basics/congratulations/index.html b/docs/tutorial-basics/congratulations/index.html
index ce6f8771c..146a27c4c 100644
--- a/docs/tutorial-basics/congratulations/index.html
+++ b/docs/tutorial-basics/congratulations/index.html
@@ -5,7 +5,7 @@
Congratulations! | LIPS Scheme
-
+
diff --git a/docs/tutorial-basics/create-a-blog-post/index.html b/docs/tutorial-basics/create-a-blog-post/index.html
index 4115b4a81..d0d309c4f 100644
--- a/docs/tutorial-basics/create-a-blog-post/index.html
+++ b/docs/tutorial-basics/create-a-blog-post/index.html
@@ -5,7 +5,7 @@
Create a Blog Post | LIPS Scheme
-
+
diff --git a/docs/tutorial-basics/create-a-document/index.html b/docs/tutorial-basics/create-a-document/index.html
index 5431eacf6..c92f8508a 100644
--- a/docs/tutorial-basics/create-a-document/index.html
+++ b/docs/tutorial-basics/create-a-document/index.html
@@ -5,7 +5,7 @@
Create a Document | LIPS Scheme
-
+
diff --git a/docs/tutorial-basics/create-a-page/index.html b/docs/tutorial-basics/create-a-page/index.html
index d80b2cdd4..f78d04fd8 100644
--- a/docs/tutorial-basics/create-a-page/index.html
+++ b/docs/tutorial-basics/create-a-page/index.html
@@ -5,7 +5,7 @@
Create a Page | LIPS Scheme
-
+
diff --git a/docs/tutorial-basics/deploy-your-site/index.html b/docs/tutorial-basics/deploy-your-site/index.html
index 7882063f6..4fe0c4a5b 100644
--- a/docs/tutorial-basics/deploy-your-site/index.html
+++ b/docs/tutorial-basics/deploy-your-site/index.html
@@ -5,7 +5,7 @@
Deploy your site | LIPS Scheme
-
+
diff --git a/docs/tutorial-basics/markdown-features/index.html b/docs/tutorial-basics/markdown-features/index.html
index 4da6a654c..0913084bf 100644
--- a/docs/tutorial-basics/markdown-features/index.html
+++ b/docs/tutorial-basics/markdown-features/index.html
@@ -5,7 +5,7 @@
Markdown Features | LIPS Scheme
-
+
diff --git a/docs/tutorial-extras/manage-docs-versions/index.html b/docs/tutorial-extras/manage-docs-versions/index.html
index 37b9ee986..dde599667 100644
--- a/docs/tutorial-extras/manage-docs-versions/index.html
+++ b/docs/tutorial-extras/manage-docs-versions/index.html
@@ -5,7 +5,7 @@
Manage Docs Versions | LIPS Scheme
-
+
diff --git a/docs/tutorial-extras/translate-your-site/index.html b/docs/tutorial-extras/translate-your-site/index.html
index f418c5bd0..1efdf2727 100644
--- a/docs/tutorial-extras/translate-your-site/index.html
+++ b/docs/tutorial-extras/translate-your-site/index.html
@@ -5,7 +5,7 @@
Translate your site | LIPS Scheme
-
+
diff --git a/index.html b/index.html
index 9bdf27bf2..4cf8061e2 100644
--- a/index.html
+++ b/index.html
@@ -5,7 +5,7 @@
LIPS Scheme | LIPS Scheme
-
+
diff --git a/markdown-page/index.html b/markdown-page/index.html
index 8bb8758da..d1a0dc1ce 100644
--- a/markdown-page/index.html
+++ b/markdown-page/index.html
@@ -5,7 +5,7 @@
Markdown page example | LIPS Scheme
-
+