Released min v0.45.0
@@ -1336,7 +1336,6 @@ .tip > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23009926' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' /%3E %3C/svg%3E") }
.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .tip > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23009926' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' /%3E %3C/svg%3E") } -.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } .tip > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23009926' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' /%3E %3C/svg%3E") } .tip > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23009926' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' /%3E %3C/svg%3E") } .note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") }@@ -1347,25 +1346,33 @@ .note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") }
.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } .tip > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23009926' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' /%3E %3C/svg%3E") } .tip > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23009926' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' /%3E %3C/svg%3E") } +.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } +.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } +.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } +.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .tip > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23009926' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } -.sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } +.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } +.tip > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23009926' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } -.sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } +.tip > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23009926' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } +.tip > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23009926' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } +.tip > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23009926' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } +.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") }@@ -1374,7 +1381,9 @@ .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") }
.sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } +.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } +.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") }@@ -1383,34 +1392,23 @@ .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") }
.sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } -.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } -.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } -.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } -.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } -.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } -.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } -.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } -.tip > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23009926' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' /%3E %3C/svg%3E") } -.tip > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23009926' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } -.tip > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23009926' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } -.tip > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23009926' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } -.note > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 384 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23264c72' d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z' /%3E %3C/svg%3E") } -.tip > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23009926' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } +.tip > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23009926' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } +.sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") } .sidebar > p:first-child:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%23555555' d='M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' /%3E %3C/svg%3E") }a[href^='#document-top']:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 448 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%234183c4' d='M246.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 109.3 361.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zm160 352l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 301.3 361.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z' /%3E %3C/svg%3E") } a[href^='http']:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%234183c4' d='M352 256c0 22.2-1.2 43.6-3.3 64H163.3c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64H348.7c2.2 20.4 3.3 41.8 3.3 64zm28.8-64H503.9c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64H380.8c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32H376.7c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0H167.7c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0H18.6C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192H131.2c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64H8.1C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6H344.3c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352H135.3zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6H493.4z' /%3E %3C/svg%3E") } a[href*='github.com']:before { background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 496 512' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath fill='%234183c4' d='M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z' /%3E %3C/svg%3E") }@@ -1565,7 +1563,7 @@ </li>
<li><a href="#Extending-min">Extending min</a> <ul> <li><a href="#Implementing-new-min-modules-using-min-itself">Implementing new min modules using min itself</a></li> - <li><a href="#Specifying-your-custom-prelude-program">Specifying your custom prelude program</a></li> + <li><a href="#Specifying-a-<em>prelude</em>-program">Specifying a <em>prelude</em> program</a></li> <li><a href="#Embedding-min-in-your-Nim-program">Embedding min in your Nim program</a></li> </ul> </li>@@ -1626,21 +1624,18 @@ <li><a href="#Suffixes">Suffixes</a></li>
</ul> </li> <li><a href="#<code>global</code>-Module"><code>global</code> Module</a></li> - <li><a href="#<code>stack</code>-Module"><code>stack</code> Module</a></li> - <li><a href="#<code>seq</code>-Module"><code>seq</code> Module</a></li> + <li><a href="#<code>crypto</code>-Module"><code>crypto</code> Module</a></li> <li><a href="#<code>dict</code>-Module"><code>dict</code> Module</a></li> - <li><a href="#<code>dstore</code>-Module"><code>dstore</code> Module</a></li> - <li><a href="#<code>io</code>-Module"><code>io</code> Module</a></li> <li><a href="#<code>fs</code>-Module"><code>fs</code> Module</a></li> - <li><a href="#<code>logic</code>-Module"><code>logic</code> Module</a></li> - <li><a href="#<code>str</code>-Module"><code>str</code> Module</a></li> + <li><a href="#<code>http</code>-Module"><code>http</code> Module</a></li> + <li><a href="#<code>io</code>-Module"><code>io</code> Module</a></li> + <li><a href="#<code>math</code>-Module"><code>math</code> Module</a></li> + <li><a href="#<code>net</code>-Module"><code>net</code> Module</a></li> + <li><a href="#<code>seq</code>-Module"><code>seq</code> Module</a></li> + <li><a href="#<code>stack</code>-Module"><code>stack</code> Module</a></li> + <li><a href="#<code>store</code>-Module"><code>store</code> Module</a></li> <li><a href="#<code>sys</code>-Module"><code>sys</code> Module</a></li> - <li><a href="#<code>num</code>-Module"><code>num</code> Module</a></li> <li><a href="#<code>time</code>-Module"><code>time</code> Module</a></li> - <li><a href="#<code>crypto</code>-Module"><code>crypto</code> Module</a></li> - <li><a href="#<code>math</code>-Module"><code>math</code> Module</a></li> - <li><a href="#<code>net</code>-Module"><code>net</code> Module</a></li> - <li><a href="#<code>http</code>-Module"><code>http</code> Module</a></li> <li><a href="#<code>xml</code>-Module"><code>xml</code> Module</a></li> </ul> </li>@@ -1773,11 +1768,11 @@ <li>It will not be possible to perform HTTPS requests</li>
<li><p>Only the following symbols will be exposed by the <a href="#<code>crypto</code>-Module">crypto Module</a>:</p> <ul> -<li><a href="#min-operator-id-md5">md5</a></li> -<li><a href="#min-operator-id-sha1">sha1</a></li> -<li><a href="#min-operator-id-encode">encode</a></li> -<li><a href="#min-operator-id-decode">decode</a></li> -<li><a href="#min-operator-id-aes">aes</a></li> +<li><a href="#min-operator-id-md5">crypto.md5</a></li> +<li><a href="#min-operator-id-sha1">crypto.sha1</a></li> +<li><a href="#min-operator-id-encode">crypto.encode</a></li> +<li><a href="#min-operator-id-decode">crypto.decode</a></li> +<li><a href="#min-operator-id-aes">crypto.aes</a></li> </ul> </li> </ul>@@ -1786,7 +1781,7 @@
<a id="-d:nopcre"></a> <h5>-d:nopcre<a href="#document-top" title="Go to top"></a></h5> -<p>If the <strong>-d:nopcre</strong> is specified when compiling, min will be built <em>without</em> PCRE support, so it will not be possible to use regular expressions and the following symbols will <em>not</em> be exposed by the <a href="#<code>str</code>-Module">str Module</a>:</p> +<p>If the <strong>-d:nopcre</strong> is specified when compiling, min will be built <em>without</em> PCRE support, so it will not be possible to use regular expressions and the following symbols will <em>not</em> be exposed by the <a href="#<code>global</code>-Module">global Module</a>:</p> <ul> <li><a href="#min-operator-id-search">search</a></li>@@ -1826,7 +1821,7 @@ <span class="prompt">[/Users/h3rald/test]$</span></p></div>
<p>The result of each operation will be placed on top of the stack, and it will be available to subsequent operation</p> -<div class="min-terminal"><p><span class="prompt">[/Users/h3rald/test]$</span> dup * +<div class="min-terminal"><p><span class="prompt">[/Users/h3rald/test]$</span> stack.dup * 16 <span class="prompt">[/Users/h3rald/test]$</span></p></div>@@ -1842,7 +1837,7 @@
<p>To execute a min script, you can:</p> <ul> -<li>Run <code>min eval "... program..."</code> to execute a program inline.</li> +<li>Run <code>min eval "...program..."</code> to execute a program inline.</li> <li>Run <code>min myfile.min</code> to execute a program contained in a file.</li> <li>Run <code>min run <mmm></code> to execute the <code>main</code> symbol of the specified min managed module. If the managed module is not installed globally, it will be downloaded and installed automatically.</li> </ul>@@ -1890,7 +1885,7 @@ <h3>Getting help on a min symbol<a href="#document-top" title="Go to top"></a></h3>
<p>min comes with a built-in <code>help</code> command that can be used to print information on a specific symbol. Essentially, this is equivalent to use the <a href="#min-operator-id-help">help</a> symbol within the min REPL.</p> -<div class="min-terminal"><p><span class="prompt">$</span> min help dup</p></div> +<div class="min-terminal"><p><span class="prompt">$</span> min help stack.dup</p></div> <a id="Syntax-highlighting"></a> <h3>Syntax highlighting<a href="#document-top" title="Go to top"></a></h3>@@ -1911,7 +1906,7 @@
<p>If not, well, here’s how a short min program looks like:</p> <pre><code>; This is a comment -(1 2 3 4 5) (dup *) map +(1 2 3 4 5) (stack.dup *) seq.map #| This is a... ...multiline comment |# </code></pre>@@ -1925,8 +1920,8 @@ <p>Let’s see how it works:</p>
<ol> <li>First, a list containing the first five integers is pushed on the stack.</li> -<li>Then, another list containing two symbols (<code>dup</code> and <code>*</code>) is pushed on the stack. This constitutes a quoted program which, when executed duplicates the first element on the stack — this is done by <code>dup</code>— and then multiplies — with <code>*</code>— the two elements together.</li> -<li>Finally, the symbol <code>map</code> is pushed on the stack. Map takes a list of elements and a quoted program and applies the program to each element.</li> +<li>Then, another list containing two symbols (<code>stack.dup</code> and <code>*</code>) is pushed on the stack. This constitutes a quoted program which, when executed duplicates the first element on the stack — this is done by <code>stack.dup</code>— and then multiplies — with <code>*</code>— the two elements together.</li> +<li>Finally, the symbol <code>seq.map</code> is pushed on the stack. Map takes a list of elements and a quoted program and applies the program to each element.</li> </ol>@@ -1992,16 +1987,12 @@ </code></pre>
<div class="tip"><p>Tip</p> -<p>The <a href="#min-operator-id-dtype">dtype</a> operator can be used to set the type of a dictionary.</p></div> +<p>The <a href="#min-operator-id-dtype">dict.dtype</a> operator can be used to set the type of a dictionary.</p></div> -<p>The <a href="#<code>logic</code>-Module">logic Module</a> provides predicate operators to check if an element belongs to a particular data type or pseudo-type (<code>boolean?</code>, <code>number?</code>, <code>integer?</code>, <code>float?</code>, …).</p> +<p>The <a href="#<code>global</code>-Module">global Module</a> provides predicate operators to check if an element belongs to a particular data type or pseudo-type (<code>boolean?</code>, <code>number?</code>, <code>integer?</code>, <code>float?</code>, …).</p> <p>Additionally, the <a href="#<code>global</code>-Module">global Module</a> provides operators to convert values from a data type to another (e.g. <a href="#min-operator-id-integer">integer</a>, <a href="#min-operator-id-string">string</a>, and so on).</p> -<div class="note"><p>Note</p> - -<p>Most of the operators defined in the <a href="#<code>num</code>-Module">num Module</a> are able to operate on both integers and floats.</p></div> - <a id="Quotations"></a> <h3>Quotations<a href="#document-top" title="Go to top"></a></h3>@@ -2009,20 +2000,20 @@ <p>Quotations are the most important thing to understand in min. Besides being the data type used for lists, they are also used to delimit blocks of min code that is not going to be immediately executed.</p>
<p>Consider for example the following min code which returns all the files present in the current folder sorted by name:</p> -<pre><code> . ls (ftype "file" ==) filter '> sort +<pre><code> sys.pwd sys.ls (fs.type "file" ==) seq.filter '> seq.sort </code></pre> -<p>The symbol <a href="#min-operator-id-filter">filter</a> takes two quotations as arguments – the first quotation on the stack is applied to all the elements of the second quotation on the stack, to determine which elements of the second quotation will be part of the resulting quotation. This is an example of how quotations can be used both as lists and programs.</p> +<p>The symbol <a href="#min-operator-id-filter">seq.filter</a> takes two quotations as arguments – the first quotation on the stack is applied to all the elements of the second quotation on the stack, to determine which elements of the second quotation will be part of the resulting quotation. This is an example of how quotations can be used both as lists and programs.</p> <p>Let’s examine this program step-by-step:</p> <ol> -<li>The <code>.</code> symbol is pushed on the stack, and it is immediately evaluated to the full path to the current directory.</li> -<li>The <code>ls</code> symbol is pushed on the stack, it consumes the string already on the stack and returns a quotation containing all files and directories within the current directory.</li> -<li>The quotation <code>(ftype 'file ==)</code> is pushed on the stack. It is treated exactly like a list of data and it is not evaluated.</li> -<li>The <code>filter</code> symbol is pushed on the stack. This symbol takes two quotations as input, and applies the result of the first quotation on the stack (<code>(ftype "file" ==)</code>) to all elements of the second quotation of the stack (the list of files and directories), returning a new quotation containing only those elements of the second quotation on the stack that satisfy the result of the first quotation. In this case, it returns a new quotation containing only files.</li> +<li>The <code>sys.pwd</code> symbol is pushed on the stack, and it is immediately evaluated to the full path to the current directory.</li> +<li>The <code>sys.ls</code> symbol is pushed on the stack, it consumes the string already on the stack and returns a quotation containing all files and directories within the current directory.</li> +<li>The quotation <code>(fs.type 'file ==)</code> is pushed on the stack. It is treated exactly like a list of data and it is not evaluated.</li> +<li>The <code>seq.filter</code> symbol is pushed on the stack. This symbol takes two quotations as input, and applies the result of the first quotation on the stack (<code>(fs.type "file" ==)</code>) to all elements of the second quotation of the stack (the list of files and directories), returning a new quotation containing only those elements of the second quotation on the stack that satisfy the result of the first quotation. In this case, it returns a new quotation containing only files.</li> <li><code>'></code> is pushed on the stack. The <code>'</code> sigil can be used instead of the <code>quote</code> symbol to quote a single symbol, <code>></code> in this case. In other words, it is instantly evaluated to the quotation <code>(>)</code>.</li> -<li>The symbol <code>sort</code> is pushed on the stack. This symbol, like <code>filter</code>, takes two quotations as input, and applies the first quotation to each element of the second quotation, effectively sorting each element of the second quotation using the predicate expressed by the first quotation. In this case, all files are sorted by name in ascending order.</li> +<li>The symbol <code>seq.sort</code> is pushed on the stack. This symbol, like <code>seq.filter</code>, takes two quotations as input, and applies the first quotation to each element of the second quotation, effectively sorting each element of the second quotation using the predicate expressed by the first quotation. In this case, all files are sorted by name in ascending order.</li> </ol>@@ -2037,12 +2028,12 @@ <p>When a quotation is created, it is treated as data, no matter what it contains: it is placed on the stack, like an integer or a string would. However, unlike other data types, a quotation can be evaluated in certain situations and when it happens its contents are pushed on the stack.</p>
<p>Consider the following program:</p> -<pre><code> (1 2 3 4 5 6 7) (odd?) filter +<pre><code> (1 2 3 4 5 6 7) (odd?) seq.filter </code></pre> <p>This program returns a new quotation containing all odd numbers contained in quotation <code>(1 2 3 4 5 6 7)</code>.</p> -<p>In this case, the second quotation is used to <em>quote</em> the symbol <code>odd?</code> so that instead of being executed immediately, it will be executed by the symbol <code>filter</code> on each element of the first quotation. In this way, we may say that <code>(odd?)</code> is <em>dequoted</em> by the symbol <code>filter</code>.</p> +<p>In this case, the second quotation is used to <em>quote</em> the symbol <code>odd?</code> so that instead of being executed immediately, it will be executed by the symbol <code>seq.filter</code> on each element of the first quotation. In this way, we may say that <code>(odd?)</code> is <em>dequoted</em> by the symbol <code>seq.filter</code>.</p> <p>The symbol <a href="#min-operator-id-dequote">dequote</a> or its alias <code>-></code> can be used to dequote a quotation by pushing all its elements on the main stack. Essentially, this <em>executes</em> the quotation in the current context.</p>@@ -2082,7 +2073,7 @@
<a id="Symbols"></a> <h4>Symbols<a href="#document-top" title="Go to top"></a></h4> -<p><em>Symbols</em> are the most common type of operator. A min symbol is a single word that is either provided by one of the predefined min modules like <code>dup</code> or <code>pwd</code> or defined by the user. User-defined symbols must:</p> +<p><em>Symbols</em> are the most common type of operator. A min symbol is a single word that is either provided by one of the predefined min modules like <code>stack.dup</code> or <code>sys.pwd</code> or defined by the user. User-defined symbols must:</p> <ul> <li>Start with a letter or an underscore (_).</li>@@ -2090,7 +2081,7 @@ <li>Contain zero or more letters, numbers and/or any of the following characters: <code>/ ! ? + * _ -</code></li>
</ul> -<p>If a symbol contains a dot (<code>.</code>) then it is namespaced by its containing module or dictionary. For example, <code>fs.dirname</code> identifies the {<a href="#min-operator-id-dirname}}%20operator%20defined%20in%20the%20{{#link-module">dirname}} operator defined in the {{#link-module</a> symbol. The following min program defines a new symbol called square that duplicates the first element on the stack and multiplies the two elements:</p> +<p>If a symbol contains a dot (<code>.</code>) then it is namespaced by its containing module or dictionary. For example, <code>fs.dirname</code> identifies the {<a href="#min-operator-id-dirname}}%20operator%20defined%20in%20the%20{{#link-module">fs.dirname}} operator defined in the {{#link-module</a> symbol. The following min program defines a new symbol called square that duplicates the first element on the stack and multiplies the two elements:</p> <pre><code> ( symbol square@@ -2116,7 +2107,7 @@ <h5>Using the lambda operator<a href="#document-top" title="Go to top"></a></h5>
<p>Sometimes you just want to bind a piece of code to a symbol to reuse it later, typically something simple and easy-to-read. In these cases, you can use the <a href="#min-operator-id-lambda">lambda</a> operator (or the <code>^</code> sigil). For example, the previous <code>square</code> operator definition could be rewritten simply as the following.</p> -<pre><code> (dup *) ^square +<pre><code> (stack.dup *) ^square </code></pre> <p>Note that this feels like using <a href="#min-operator-id-define">define</a>, but the main difference between <a href="#min-operator-id-lambda">lambda</a> and <a href="#min-operator-id-define">define</a> is that <code>lambda</code> only works on quotations doesn’t auto-quote them, so that they are immediately evaluated when the corresponding symbol is pushed on the stack.</p>@@ -2141,11 +2132,6 @@ <p>Besides symbols, you can also define sigils. min provides a set of predefined <em>sigils</em> as abbreviations for commonly used symbols.</p>
<p>A sigil can be prepended to a double-quoted string or a single word (with no spaces) which will be treated as a string instead of using the corresponding symbol.</p> -<p>For example, the following executes the command <code>ls -al</code> and pushes the command return code on the stack:</p> - -<pre><code> !"ls -al" -</code></pre> - <p>Currently min provides the following sigils:</p> <dl>@@ -2153,28 +2139,16 @@ <dt>'</dt>
<dd>Alias for <a href="#min-operator-id-quote">quote</a>.</dd> <dt>:</dt> <dd>Alias for <a href="#min-operator-id-define">define</a>.</dd> +<dt>?</dt> +<dd>Alias for <a href="#min-operator-id-help">help</a>.</dd> +<dt>~</dt> +<dd>Alias for <a href="#min-operator-id-lambda-bind">lambda-bind</a>.</dd> +<dt>$</dt> +<dd>Alias for <a href="#min-operator-id-|get-env">|get-env</a>.</dd> <dt>@</dt> <dd>Alias for <a href="#min-operator-id-bind">bind</a>.</dd> <dt>^</dt> <dd>Alias for <a href="#min-operator-id-lambda">lambda</a>.</dd> -<dt>~</dt> -<dd>Alias for <a href="#min-operator-id-lambda-bind">lambda-bind</a>.</dd> -<dt>></dt> -<dd>Alias for <a href="#min-operator-id-save-symbol">save-symbol</a>.</dd> -<dt><</dt> -<dd>Alias for <a href="#min-operator-id-load-symbol">load-symbol</a>.</dd> -<dt>/</dt> -<dd>Alias for <a href="#min-operator-id-dget">dget</a>.</dd> -<dt>%</dt> -<dd>Alias for <a href="#min-operator-id-dset">dset</a>.</dd> -<dt>?</dt> -<dd>Alias for <a href="#min-operator-id-help">help</a>.</dd> -<dt>!</dt> -<dd>Alias for <a href="#min-operator-id-system">system</a>.</dd> -<dt>&</dt> -<dd>Alias for <a href="#min-operator-id-run">run</a>.</dd> -<dt>$</dt> -<dd>Alias for <a href="#min-operator-id-get-env">get-env</a>.</dd> </dl> <p>Besides system sigils, you can also create your own sigils. Unlike system sigils however, user defined sigils:</p>@@ -2226,7 +2200,7 @@
<pre><code> ( symbol square (num :n ==> num :result) - (n dup * @result) + (n stack.dup * @result) ) operator </code></pre>@@ -2286,7 +2260,7 @@ <pre><code> (
symbol square (==> quot ^o) ( - (dup *) ~o + (stack.dup *) ~o ) ) :: </code></pre>@@ -2451,13 +2425,13 @@ <h3>Definitions<a href="#document-top" title="Go to top"></a></h3>
<p>Being a concatenative language, min does not really need named parameters or variables: symbols just pop elements off the main stack in order, and that’s normally enough. There is however one small problem with the traditional concatenative paradigm; consider the following program for example:</p> -<pre><code> dup dup +<pre><code> stack.dup stack.dup "\.zip$" match? - swap fsize 1000000 > and - swap mtime now 3600 - > + stack.swap fs.size 1000000 > and + stack.swap fs.mtime now 3600 - > </code></pre> -<p>This program takes a single string corresponding to a file path and returns true if it’s a .zip file bigger than 1MB that was modified in the last hour. Sure, it is remarkable that no variables are needed for such a program, but it is not very readable: because no variables are used, it is often necessary to make copies of elements and push them to the end of the stack – that’s what the <a href="#min-operator-id-dup">dup</a> and <a href="#min-operator-id-swap">swap</a> are used for.</p> +<p>This program takes a single string corresponding to a file path and returns true if it’s a .zip file bigger than 1MB that was modified in the last hour. Sure, it is remarkable that no variables are needed for such a program, but it is not very readable: because no variables are used, it is often necessary to make copies of elements and push them to the end of the stack – that’s what the <a href="#min-operator-id-dup">stack.dup</a> and <a href="#min-operator-id-swap">stack.swap</a> are used for.</p> <p>The good news is that you can use the <a href="#min-operator-id-define">define</a> operator and the <code>:</code> sigil to define new symbols, and symbols can also be set to fixed values (literals).</p>@@ -2465,8 +2439,8 @@ <p>Consider the following program:</p>
<pre><code> :filepath filepath "\.zip$" match? - filepath fsize 1000000 > - filepath mtime now 3600 - > + filepath fs.size 1000000 > + filepath fs.mtime time.now 3600 - > and and </code></pre>@@ -2484,14 +2458,14 @@ (
a 3 + :a ( a 1 + :a - (a dup * :a) dequote + (a stack.dup * :a) dequote ) dequote ) dequote </code></pre> <p>…What is the value of the symbol <code>a</code> after executing it?</p> -<p>Simple: <code>4</code>. Every quotation defines its own scope, and in each scope, a new variable called <code>a</code> is defined. In the innermost scope containing the quotation <code>(a dup * :a)</code> the value of <code>a</code> is set to <code>64</code>, but this value is not propagated to the outer scopes. Note also that the value of <code>a</code> in the innermost scope is first retrieved from the outer scope (8).</p> +<p>Simple: <code>4</code>. Every quotation defines its own scope, and in each scope, a new variable called <code>a</code> is defined. In the innermost scope containing the quotation <code>(a stack.dup * :a)</code> the value of <code>a</code> is set to <code>64</code>, but this value is not propagated to the outer scopes. Note also that the value of <code>a</code> in the innermost scope is first retrieved from the outer scope (8).</p> <p>If we want to change the value of the original <code>a</code> symbol defined in the outermost scope, we have to use the <a href="#min-operator-id-bind">bind</a> or its shorthand sigil <code>@</code>, so that the program becomes the following:</p>@@ -2500,7 +2474,7 @@ (
a 3 + @a ;The value of a is updated to 7. ( a 1 + @a ;The value of a is updated to 8 - (a dup * @a) dequote ;The value of a is now 64 + (a stack.dup * @a) dequote ;The value of a is now 64 ) dequote ) dequote </code></pre>@@ -2515,7 +2489,7 @@ </code></pre>
<p>…because the symbol quote is already defined in the root scope. However, note that the following code will <em>not</em> return an error:</p> -<pre><code> (5 :quote quote dup *) -> ;returns 25 +<pre><code> (5 :quote quote stack.dup *) -> ;returns 25 </code></pre> <p>…because the <code>quote</code> symbol is only defined in the root scope and can therefore be redefined in child scopes.</p>@@ -2552,7 +2526,7 @@ }</p></div>
<div class="note"><p>Note</p> -<p><native> values cannot be retrieved using the <a href="#min-operator-id-dget">dget</a> operator.</p></div> +<p><native> values cannot be retrieved using the <a href="#min-operator-id-dget">dict.dget</a> operator.</p></div> <a id="Accessing-the-current-scope"></a> <h4>Accessing the current scope<a href="#document-top" title="Go to top"></a></h4>@@ -2605,7 +2579,7 @@
<ul> <li><a href="#min-operator-id-case">case</a></li> <li><a href="#min-operator-id-if">if</a></li> -<li>{#link-operator||global||unless#}</li> +<li><a href="#min-operator-id-unless">unless</a></li> <li><a href="#min-operator-id-when">when</a></li> </ul>@@ -2673,14 +2647,14 @@
<pre><code> . ls ( ( - (fsize) - (pop 0) + (fs.size) + (stack.pop 0) ) try - ) map - 1 (+) reduce + ) seq.map + 1 (+) seq.reduce </code></pre> -<p>This program calculates the size in bytes of all files included in the current directory. Because the <a href="#min-operator-id-fsize">fsize</a> symbol throws an error if the argument provided is not a file (for example, if it is a directory), the <code>try</code> symbol is used to remove the error from the stack and push <code>0</code> on the stack instead.</p> +<p>This program calculates the size in bytes of all files included in the current directory. Because the <a href="#min-operator-id-size">fs.size</a> symbol throws an error if the argument provided is not a file (for example, if it is a directory), the <code>try</code> symbol is used to remove the error from the stack and push <code>0</code> on the stack instead.</p> <a id="Using-the-min-Shell"></a> <h2>Using the min Shell<a href="#document-top" title="Go to top"></a></h2>@@ -2726,12 +2700,12 @@ <td>…a word starting with <code>$</code> </td>
<td> Auto-completes the current word using environment variable names.</td> </tr> <tr> -<td>…a word starting with <code>'</code>, <code>@</code>, <code>#</code>, <code>></code>, <code><</code>, <code>(</code>, <code>?</code> </td> +<td>…a word starting with <code>'</code>, <code>@</code>, <code>(</code>, <code>?</code> </td> <td> Auto-completes the current word using symbol names.</td> </tr> <tr> -<td>…a word starting with <code>*</code> and optionally containing <code>/</code>s </td> -<td> Auto-completes the current word using dictionaries and their symbol (nested invocation)</td> +<td>…a word ending with <code>.</code> </td> +<td> If the current word is a valid dictionary or module, auto-completes any symbol defined in the dictionary or module.</td> </tr> </tbody> </table>@@ -2781,7 +2755,7 @@
<div class="tip"><p>Tip</p> -<p>If you want, you can define your own keyboard shortcuts using the <a href="#min-operator-id-mapkey">mapkey</a> operator.</p></div> +<p>If you want, you can define your own keyboard shortcuts using the <a href="#min-operator-id-mapkey">io.mapkey</a> operator.</p></div> <a id="Shell-configuration-files"></a> <h3>Shell configuration files<a href="#document-top" title="Go to top"></a></h3>@@ -2806,12 +2780,12 @@
<a id="Extending-min"></a> <h2>Extending min<a href="#document-top" title="Go to top"></a></h2> -<p>min provides a fairly complete standard library with many useful modules. However, you may feel the need to extend min in order to perform more specialized tasks.</p> +<p><em>min</em> provides a fairly complete standard library with many useful modules. However, you may feel the need to extend min in order to perform more specialized tasks.</p> <p>In such situations, you basically have the following options:</p> <ul> -<li>Implementing new min modules using min itself</li> +<li>Implementing new <em>min</em> modules using <em>min</em> itself</li> <li>Specifying your custom prelude program</li> <li>Embedding min in your <a href="https://nim-lang.org">Nim</a> program</li> </ul>@@ -2824,9 +2798,9 @@ <p>When you just want to create more high-level min operator using functionalities that are already available in min, the easiest way is to create your own reusable min modules.</p>
<p>To create a new module, simply create a file containing your operator definitions implemented using either the <a href="#min-operator-id-operator">operator</a> operator or the <a href="#min-operator-id-lambda">lambda</a> operator</p> -<pre><code>(dup *) ^pow2 -(dup dup * *) ^pow3 -(dup * dup *) ^pow4 +<pre><code>(stack.dup *) ^pow2 +(stack.dup stack.dup * *) ^pow3 +(stack.dup * stack.dup *) ^pow4 </code></pre> <p>Save your code to a file (e.g. <em>quickpows.min</em>) and you can use it in other Nim files using the <a href="#min-operator-id-require">require</a> operator and the <a href="#min-operator-id-import">import</a> (if you want to import the operators in the current scope):</p>@@ -2836,31 +2810,10 @@
2 qp.pow3 qp.pow2 puts ;prints 64 </code></pre> -<a id="Specifying-your-custom-prelude-program"></a> -<h3>Specifying your custom prelude program<a href="#document-top" title="Go to top"></a></h3> +<a id="Specifying-a-<em>prelude</em>-program"></a> +<h3>Specifying a <em>prelude</em> program<a href="#document-top" title="Go to top"></a></h3> -<p>By default, when min is started it loads the following <em>prelude.min</em> program:</p> - -<pre><code>; Imports -'str import -'io import -'logic import -'num import -'sys import -'stack import -'seq import -'dict import -'time import -'fs import -'crypto import -'math import -'net import -'http import -; Unseal prompt symbol -'prompt unseal-symbol -</code></pre> - -<p>Essentially, this causes min to import <em>all</em> the modules and unseals the <a href="#min-operator-id-prompt">prompt</a> symbol so that it can be customized. If you want, you can provide your own prelude file to specify your custom behaviors, selectively import modules, and define your own symbols, like this:</p> +<p>If you want, you can execute the <em>min</em> executable with the <code>-p</code> option to specify a <em>prelude</em> program that will be executed when <em>min</em> is started. This can be useful to specify your custom behaviors, selectively import modules, and define your own symbols, like this:</p> <div class="min-terminal"><p><span class="prompt">$</span> min -i -p:myfile.min</p></div>@@ -3058,7 +3011,11 @@ <p>min includes a small but powerful standard library organized into the following <em>modules</em>:</p>
<dl> <dt><a href="#<code>global</code>-Module">global Module</a></dt> -<dd>Defines the basic language constructs, such as control flow, type conversions, symbol definition and binding, exception handling, etc. +<dd>Defines the basic language constructs, such as control flow, type conversions, symbol definition and binding, exception handling, etc. This module is automatically imported (no need to prepend <code>global.</code> . to reference its symbols).</dd> +<dt><a href="#<code>crypto</code>-Module">crypto Module</a></dt> +<dd>Provides operators to compute hashes (MD4, MD5, SHA1, SHA224, SHA256, SHA384, sha512), base64 encoding/decoding, and AES encryption/decryption.</dd> +<dt><a href="#<code>dict</code>-Module">dict Module</a></dt> +<dd>Defines operators for dictionaries, like <code>dict.get</code>, <code>dict.dup</code>, <code>dict.set</code>, etc. {#link-module](#min-operator-id-require}} symbol, min will attempt to lookup the module (for example <strong>module1</strong>) checking the following files (in order):</dd> </dl>@@ -3166,37 +3123,31 @@ <p>min includes a small but powerful standard library organized into the following <em>modules</em>:</p>
<dl> <dt><a href="#<code>global</code>-Module">global Module</a></dt> -<dd>Defines the basic language constructs, such as control flow, type conversions, symbol definition and binding, exception handling, etc.</dd> +<dd>Defines the basic language constructs, such as control flow, type conversions, symbol definition and binding, exception handling, etc. This module is automatically imported (no need to prepend <code>global.</code> . to reference its symbols).</dd> +<dt><a href="#<code>crypto</code>-Module">crypto Module</a></dt> +<dd>Provides operators to compute hashes (MD4, MD5, SHA1, SHA224, SHA256, SHA384, sha512), base64 encoding/decoding, and AES encryption/decryption.</dd> +<dt><a href="#<code>dict</code>-Module">dict Module</a></dt> +<dd>Defines operators for dictionaries, like <code>dict.get</code>, <code>dict.dup</code>, <code>dict.set</code>, etc.</dd> <dt>{#link-module)</dt> -<dd>Defines combinators and stack-shufflers like dip, dup, swap, cons, etc.</dd> +<dd>Provides operators for reading and writing files, and accessing file information and properties.</dd> +<dt><a href="#<code>http</code>-Module">http Module</a></dt> +<dd>Provides operators to perform HTTP requests, download files and create basic HTTP servers.</dd> +<dt><a href="#<code>io</code>-Module">io Module</a></dt> +<dd>Provides operators for writing to STDOUT, reading from STDIN, capturing key presses, etc.</dd> +<dt><a href="#<code>math</code>-Module">math Module</a></dt> +<dd>Provides many mathematical operators and constants such as trigonometric functions, square root, logarithms, etc.</dd> +<dt><a href="#<code>net</code>-Module">net Module</a></dt> +<dd>Provides basic supports for sockets (some features are not supported on Windows systems).</dd> <dt><a href="#<code>seq</code>-Module">seq Module</a></dt> -<dd>Defines operators for quotations, like map, filter, reduce, etc.</dd> -<dt><a href="#<code>dict</code>-Module">dict Module</a></dt> -<dd>Defines operators for dictionaries, like dget, ddup, dset, etc.</dd> -<dt><a href="#<code>dstore</code>-Module">dstore Module</a></dt> +<dd>Defines operators for quotations, like <code>seq.map</code>, <code>seq.filter</code>, <code>seq.reduce</code>, etc.</dd> +<dt><a href="#<code>stack</code>-Module">stack Module</a></dt> +<dd>Defines combinators and stack-shufflers like <code>stack.pop</code>, <code>stack.dup</code>, <code>stack.swap</code>, <code>stack.cons</code>, etc.</dd> +<dt><a href="#<code>store</code>-Module">store Module</a></dt> <dd>Provides support for simple, persistent, in-memory JSON stores.</dd> -<dt><a href="#<code>io</code>-Module">io Module</a></dt> -<dd>Provides operators for reading and writing files as well as printing to STDOUT and reading from STDIN.</dd> -<dt><a href="#<code>fs</code>-Module">fs Module</a></dt> -<dd>Provides operators for accessing file information and properties.</dd> -<dt><a href="#<code>logic</code>-Module">logic Module</a></dt> -<dd>Provides comparison operators for all min data types and other boolean logic operators.</dd> -<dt><a href="#<code>str</code>-Module">str Module</a></dt> -<dd>Provides operators to perform operations on strings, use regular expressions, interpolation, etc.</dd> <dt><a href="#<code>sys</code>-Module">sys Module</a></dt> <dd>Provides operators to use as basic shell commands, access environment variables, and execute external commands.</dd> -<dt><a href="#<code>num</code>-Module">num Module</a></dt> -<dd>Provides operators to perform simple mathematical operations on integer and floating point numbers.</dd> <dt><a href="#<code>time</code>-Module">time Module</a></dt> <dd>Provides a few basic operators to manage dates, times, and timestamps.</dd> -<dt><a href="#<code>crypto</code>-Module">crypto Module</a></dt> -<dd>Provides operators to compute hashes (MD4, MD5, SHA1, SHA224, SHA256, SHA384, sha512), base64 encoding/decoding, and AES encryption/decryption.</dd> -<dt><a href="#<code>math</code>-Module">math Module</a></dt> -<dd>Provides many mathematical operators and constants such as trigonometric functions, square root, logarithms, etc.</dd> -<dt><a href="#<code>net</code>-Module">net Module</a></dt> -<dd>Provides basic supports for sockets (some features are not supported on Windows systems).</dd> -<dt><a href="#<code>http</code>-Module">http Module</a></dt> -<dd>Provides operators to perform HTTP requests, download files and create basic HTTP servers.</dd> <dt><a href="#<code>xml</code>-Module">xml Module</a></dt> <dd>Provides operators for parsing, creating and querying XML/HTML code using CSS selectors.</dd> </dl>@@ -3289,7 +3240,7 @@ ;error
} </code></pre></dd> <dt><span class="kwd">dict:socket</span></dt> -<dd><p>A socket dictionary that must be created through the <a href="#min-operator-id-socket">socket</a> operator:</p> +<dd><p>A socket dictionary that must be created through the <a href="#min-operator-id-socket">net.socket</a> operator:</p> <pre><code>{ "ipv4" :domain@@ -3299,7 +3250,7 @@ ;socket
} </code></pre></dd> <dt><span class="kwd">dict:rawval</span></dt> -<dd><p>A raw value dictionary obtained via the <a href="#min-operator-id-get-raw">get-raw</a> or <a href="#min-operator-id-dget-raw">dget-raw</a> operators:</p> +<dd><p>A raw value dictionary obtained via the <a href="#min-operator-id-get-raw">seq.get-raw</a> or <a href="#min-operator-id-dget-raw">dict.dget-raw</a> operators:</p> <pre><code>{ "sym" :type@@ -3309,7 +3260,7 @@ ;rawval
} </code></pre></dd> <dt><span class="kwd">dict:datastore</span></dt> -<dd><p>A datastore dictionary that must be created through the <a href="#min-operator-id-dsinit">dsinit</a> or <a href="#min-operator-id-dsread">dsread</a> operator:</p> +<dd><p>A datastore dictionary that must be created through the <a href="#min-operator-id-init">store.init</a> or <a href="#min-operator-id-read">store.read</a> operator:</p> <pre><code>{ {} :data@@ -3535,6 +3486,18 @@ <div class="operator"><p><span class="kwd"> =-= <strong>⇒</strong> expect-empty-stack</span></p>
<p>See <a href="#min-operator-id-expect-empty-stack">expect-empty-stack</a>.</p></div> +<p><span class="reference-title">%</span></p> + +<div class="operator"><p><span class="kwd"> % <strong>⇒</strong> interpolate</span></p> + +<p>See <a href="#min-operator-id-interpolate">interpolate</a>.</p></div> + +<p><span class="reference-title">=%</span></p> + +<div class="operator"><p><span class="kwd"> =% <strong>⇒</strong> apply-interpolate</span></p> + +<p>See <a href="#min-operator-id-apply-interpolate">apply-interpolate</a>.</p></div> + <p><span class="reference-title">^</span> <span class="sigil"></span></p> <div class="operator"><p><span class="kwd"> ^<span class="kwd">str</span> <strong>⇒</strong> <span class="kwd">str</span> lambda</span></p>@@ -3547,6 +3510,118 @@ <div class="operator"><p><span class="kwd"> ^ <strong>⇒</strong> lambda</span></p>
<p>See <a href="#min-operator-id-lambda">lambda</a>.</p></div> +<p><a id="min-operator-id-+"></a> +<span class="reference-title">+</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <span class="kwd">num<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>3</sub></span></span></p> + +<p>Sums <span class="kwd">num<sub>1</sub></span> and <span class="kwd">num<sub>2</sub></span>.</p></div> + +<p><a id="min-operator-id--"></a> +<span class="reference-title">-</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <span class="kwd">num<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>3</sub></span></span></p> + +<p>Subtracts <span class="kwd">num<sub>2</sub></span> from <span class="kwd">num<sub>1</sub></span>.</p></div> + +<p><a id="min-operator-id--inf"></a> +<span class="reference-title">-inf</span></p> + +<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">num</span></span></p> + +<p>Returns negative infinity.</p></div> + +<p><a id="min-operator-id-&ast;"></a> +<span class="reference-title">*</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <span class="kwd">num<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>3</sub></span></span></p> + +<p>Multiplies <span class="kwd">num<sub>1</sub></span> by <span class="kwd">num<sub>2</sub></span>.</p></div> + +<p><a id="min-operator-id-/"></a> +<span class="reference-title">/</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <span class="kwd">num<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>3</sub></span></span></p> + +<p>Divides <span class="kwd">num<sub>1</sub></span> by <span class="kwd">num<sub>2</sub></span>.</p></div> + +<p><a id="min-operator-id-&gt;"></a> +<span class="reference-title">></span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">a<sub>1</sub></span> is greater than <span class="kwd">a<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p> + +<div class="note"><p>Note</p> + +<p>Only comparisons among two numbers or two strings are supported.</p></div></div> + +<p><a id="min-operator-id-&gt;="></a> +<span class="reference-title">>=</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">a<sub>1</sub></span> is greater than or equal to <span class="kwd">a<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p> + +<div class="note"><p>Note</p> + +<p>Only comparisons among two numbers or two strings are supported.</p></div></div> + +<p><a id="min-operator-id-&lt;"></a> +<span class="reference-title"><</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">a<sub>1</sub></span> is smaller than <span class="kwd">a<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p> + +<div class="note"><p>Note</p> + +<p>Only comparisons among two numbers or two strings are supported.</p></div></div> + +<p><a id="min-operator-id-&lt;="></a> +<span class="reference-title"><=</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">a<sub>1</sub></span> is smaller than or equal to <span class="kwd">a<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p> + +<div class="note"><p>Note</p> + +<p>Only comparisons among two numbers or two strings are supported.</p></div></div> + +<p><a id="min-operator-id-=="></a> +<span class="reference-title">==</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">a<sub>1</sub></span> is equal to <span class="kwd">a<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p></div> + +<p><a id="min-operator-id-!="></a> +<span class="reference-title">!=</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">a<sub>1</sub></span> is not equal to <span class="kwd">a<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p></div> + +<p><span class="reference-title">||</span></p> + +<div class="operator"><p><span class="kwd"> || <strong>⇒</strong> expect-any</span></p> + +<p>See <a href="#min-operator-id-expect-any">expect-any</a>.</p></div> + +<p><span class="reference-title">&&</span></p> + +<div class="operator"><p><span class="kwd"> && <strong>⇒</strong> expect-all</span></p> + +<p>See <a href="#min-operator-id-expect-all">expect-all</a>.</p></div> + +<p><a id="min-operator-id-and"></a> +<span class="reference-title">and</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">bool<sub>1</sub></span> <span class="kwd">bool<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool<sub>3</sub></span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">bool<sub>1</sub></span> is equal to <span class="kwd">bool<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p></div> + <p><a id="min-operator-id-apply"></a> <span class="reference-title">apply</span></p>@@ -3554,6 +3629,13 @@ <div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> (<span class="kwd">a<sub>*</sub></span>)</span></p>
<p>Returns a new quotation obtained by evaluating each element of <span class="kwd">quot</span> in a separate stack.</p></div> +<p><a id="min-operator-id-apply-interpolate"></a> +<span class="reference-title">apply-interpolate</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">str</span> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>The same as pushing <code>apply</code> and then <code>interpolate</code> on the stack.</p></div> + <p><a id="min-operator-id-args"></a> <span class="reference-title">args</span></p>@@ -3561,6 +3643,27 @@ <div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">quot</span></span></p>
<p>Returns a list of all arguments passed to the current program.</p></div> +<p><a id="min-operator-id-avg"></a> +<span class="reference-title">avg</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">num</span></span></p> + +<p>Returns the average of the items of <span class="kwd">quot</span>.</p></div> + +<p><a id="min-operator-id-base"></a> +<span class="reference-title">base</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">"dec"|"hex"|"oct"|"bin"</span> <strong>⇒</strong> ∅</span></p> + +<p>Sets the numeric base used to represent integers.</p></div> + +<p><a id="min-operator-id-base?"></a> +<span class="reference-title">base?</span></p> + +<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">"dec"|"hex"|"oct"|"bin"</span></span></p> + +<p>Returns the numeric base currently used to represent integers (default: <span class="kwd">"dec"</span>).</p></div> + <p><a id="min-operator-id-bind"></a> <span class="reference-title">bind</span></p>@@ -3568,6 +3671,62 @@ <div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <span class="kwd">'sym</span> <strong>⇒</strong> ∅</span></p>
<p>Binds the specified value (auto-quoted) to an existing symbol <span class="kwd">'sym</span>.</p></div> +<p><a id="min-operator-id-bitand"></a> +<span class="reference-title">bitand</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>3</sub></span></span></p> + +<p>Computes the bitwise <em>and</em> of integer <span class="kwd">int<sub>1</sub></span> and <span class="kwd">int<sub>2</sub></span>.</p></div> + +<p><a id="min-operator-id-bitclear"></a> +<span class="reference-title">bitclear</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">int<sub>2</sub></span></span></p> + +<p>Sets the bytes specified via their position in <span class="kwd">int<sub>1</sub></span> through <span class="kwd">quot</span> to 0.</p></div> + +<p><a id="min-operator-id-bitflip"></a> +<span class="reference-title">bitflip</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">int<sub>2</sub></span></span></p> + +<p>Flips the bytes specified via their position in <span class="kwd">int<sub>1</sub></span> through <span class="kwd">quot</span>.</p></div> + +<p><a id="min-operator-id-bitnot"></a> +<span class="reference-title">bitnot</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>2</sub></span></span></p> + +<p>Computes the bitwise <em>complement</em> of <span class="kwd">int<sub>1</sub></span>.</p></div> + +<p><a id="min-operator-id-bitor"></a> +<span class="reference-title">bitor</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>3</sub></span></span></p> + +<p>Computes the bitwise <em>or</em> of integers <span class="kwd">int<sub>1</sub></span> and <span class="kwd">int<sub>2</sub></span>.</p></div> + +<p><a id="min-operator-id-bitparity"></a> +<span class="reference-title">bitparity</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>2</sub></span></span></p> + +<p>Calculate the bit parity in <span class="kwd">int<sub>1</sub></span>. If the number of 1-bits is odd, the parity is 1, otherwise 0.</p></div> + +<p><a id="min-operator-id-bitset"></a> +<span class="reference-title">bitset</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">int<sub>2</sub></span></span></p> + +<p>Sets the bytes specified via their position in <span class="kwd">int<sub>1</sub></span> through <span class="kwd">quot</span> to 0.</p></div> + +<p><a id="min-operator-id-bitxor"></a> +<span class="reference-title">bitxor</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>3</sub></span></span></p> + +<p>Computes the bitwise <em>xor</em> of integers <span class="kwd">int<sub>1</sub></span> and <span class="kwd">int<sub>2</sub></span>.</p></div> + <p><a id="min-operator-id-bool"></a> <span class="reference-title">bool</span></p>@@ -3583,6 +3742,27 @@ <li>If <span class="kwd">a</span> is a quotation or a dictionary, the empty quotation or dictionary is converted to <span class="kwd">false</span>, otherwise it is converted to <span class="kwd">true</span>.</li>
<li>If <span class="kwd">a</span> is a string, the empty string, and <code>"false"</code> are converted to <span class="kwd">false</span>, otherwise it is converted to <span class="kwd">true</span>.</li> </ul> </div> + +<p><a id="min-operator-id-boolean?"></a> +<span class="reference-title">boolean?</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is a boolean, <span class="kwd">false</span> otherwise.</p></div> + +<p><a id="min-operator-id-capitalize"></a> +<span class="reference-title">capitalize</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>Returns a copy of <span class="kwd">'sym</span> with the first character capitalized.</p></div> + +<p><a id="min-operator-id-chr"></a> +<span class="reference-title">chr</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>Returns the single character <span class="kwd">str</span> obtained by interpreting <span class="kwd">int</span> as an ASCII code.</p></div> <p><a id="min-operator-id-case"></a> <span class="reference-title">case</span></p>@@ -3682,12 +3862,40 @@ <div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">bool</span></span></p>
<p>Returns <span class="kwd">true</span> if the current program is being executed in development mode.</p></div> +<p><a id="min-operator-id-dictionary?"></a> +<span class="reference-title">dictionary?</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is a dictionary, <span class="kwd">false</span> otherwise.</p></div> + +<p><a id="min-operator-id-div"></a> +<span class="reference-title">div</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>3</sub></span></span></p> + +<p>Divides <span class="kwd">int<sub>1</sub></span> by <span class="kwd">int<sub>2</sub></span> (integer division).</p></div> + +<p><a id="min-operator-id-escape"></a> +<span class="reference-title">escape</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>Returns a copy of <span class="kwd">'sym</span> with quotes and backslashes escaped with a backslash.</p></div> + <p><a id="min-operator-id-eval"></a> <span class="reference-title">eval</span></p> <div class="operator"><p><span class="kwd"> <span class="kwd">str</span> <strong>⇒</strong> <span class="kwd">a<sub>*</sub></span></span></p> <p>Parses and interprets <span class="kwd">str</span>.</p></div> + +<p><a id="min-operator-id-even?"></a> +<span class="reference-title">even?</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">int</span> is even, <span class="kwd">false</span> otherwise.</p></div> <p><a id="min-operator-id-exit"></a> <span class="reference-title">exit</span></p>@@ -3720,6 +3928,20 @@
<p>the following program evaluates to <code>true</code>:</p> <p><code>(int string num) expect (3.4 "test" 1) ==</code></p></div></div> + +<p><a id="min-operator-id-expect-all"></a> +<span class="reference-title">expect-all</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Assuming that <span class="kwd">quot</span> is a quotation of quotations each evaluating to a boolean value, it pushes <span class="kwd">true</span> on the stack if they all evaluate to <span class="kwd">true</span>, <span class="kwd">false</span> otherwise.</p></div> + +<p><a id="min-operator-id-expect-any"></a> +<span class="reference-title">expect-any</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Assuming that <span class="kwd">quot</span> is a quotation of quotations each evaluating to a boolean value, it pushes <span class="kwd">true</span> on the stack if any evaluates to <span class="kwd">true</span>, <span class="kwd">false</span> otherwise.</p></div> <p><a id="min-operator-id-expect-empty-stack"></a> <span class="reference-title">expect-empty-stack</span></p>@@ -3745,6 +3967,13 @@ <li>If <span class="kwd">a</span> is a string, it is parsed as a float value.</li>
</ul> </div> +<p><a id="min-operator-id-float?"></a> +<span class="reference-title">float?</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is a float, <span class="kwd">false</span> otherwise.</p></div> + <p><a id="min-operator-id-foreach"></a> <span class="reference-title">foreach</span></p>@@ -3772,6 +4001,27 @@ ) try
</code></pre> <p>produces: <code>"This is a test error"</code></p></div></div> + +<p><a id="min-operator-id-from-bin"></a> +<span class="reference-title">from-bin</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> + +<p>Parses <span class="kwd">'sym</span> as a binary number.</p></div> + +<p><a id="min-operator-id-from-dec"></a> +<span class="reference-title">from-dec</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> + +<p>Parses <span class="kwd">'sym</span> as a decimal number.</p></div> + +<p><a id="min-operator-id-from-hex"></a> +<span class="reference-title">from-hex</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> + +<p>Parses <span class="kwd">'sym</span> as a hexadecimal number.</p></div> <p><a id="min-operator-id-from-json"></a> <span class="reference-title">from-json</span></p>@@ -3780,6 +4030,21 @@ <div class="operator"><p><span class="kwd"> <span class="kwd">str</span> <strong>⇒</strong> <span class="kwd">a</span></span></p>
<p>Converts a JSON string into <em>min</em> data.</p></div> +<p><a id="min-operator-id-from-oct"></a> +<span class="reference-title">from-oct</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> + +<p>Parses <span class="kwd">'sym</span> as a octal number.</p></div> + +<p><a id="min-operator-id-from-semver"></a> +<span class="reference-title">from-semver</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">str</span> <strong>⇒</strong> <span class="kwd">dict</span></span></p> + +<p>Given a basic <a href="https://semver.org">SemVer</a>-compliant string (with no additional labels) <span class="kwd">str</span>, +it pushes a dictionary <span class="kwd">dict</span> on the stack containing a <strong>major</strong>, <strong>minor</strong>, and <strong>patch</strong> key/value pairs.</p></div> + <p><a id="min-operator-id-from-yaml"></a> <span class="reference-title">from-yaml</span></p>@@ -3826,6 +4091,27 @@ <div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> ∅</span></p>
<p>Imports the a previously-loaded module <span class="kwd">'sym</span>, defining all its symbols in the current scope.</p></div> +<p><a id="min-operator-id-indent"></a> +<span class="reference-title">indent</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>Returns <span class="kwd">str</span> containing <span class="kwd">'sym</span> indented with <span class="kwd">int</span> spaces.</p></div> + +<p><a id="min-operator-id-indexof"></a> +<span class="reference-title">indexof</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <span class="kwd">str<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int</span></span></p> + +<p>If <span class="kwd">str<sub>2</sub></span> is contained in <span class="kwd">str<sub>1</sub></span>, returns the index of the first match or -1 if no match is found.</p></div> + +<p><a id="min-operator-id-inf"></a> +<span class="reference-title">inf</span></p> + +<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">num</span></span></p> + +<p>Returns infinity.</p></div> + <p><a id="min-operator-id-infix-dequote"></a> <span class="reference-title">infix-dequote</span></p>@@ -3864,7 +4150,47 @@ <li>If <span class="kwd">a</span> is a string, it is parsed as an integer value.</li>
</ul> </div> -<p> <a id="min-operator-id-lambda"></a> +<p><a id="min-operator-id-integer?"></a> +<span class="reference-title">integer?</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is an integer, <span class="kwd">false</span> otherwise.</p></div> + +<p><a id="min-operator-id-interpolate"></a> +<span class="reference-title">interpolate</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">str</span> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>Substitutes the placeholders included in <span class="kwd">str</span> with the values in <span class="kwd">quot</span>.</p> + +<div class="note"><p>Notes</p> + +<ul> +<li>If <span class="kwd">quot</span> contains symbols or quotations, they are not interpreted. To do so, call <code>apply</code> before interpolating or use <code>apply-interpolate</code> instead.</li> +<li>You can use the <code>$#</code> placeholder to indicate the next placeholder that has not been already referenced in the string.</li> +<li>You can use named placeholders like <code>$pwd</code>, but in this case <span class="kwd">quot</span> must contain a quotation containing both the placeholder names (odd items) and the values (even items).</li> +</ul> +</div> + +<div class="sidebar"><p>Example</p> + +<p>The following code (executed in a directory called ‘/Users/h3rald/Development/min’ containing 19 files):</p> + +<p><code>"Directory '$1' includes $2 files." (sys.pwd (sys.pwd sys.ls 'fs.file? seq.filter size)) apply interpolate</code></p> + +<p>produces:</p> + +<p><code>"Directory '/Users/h3rald/Development/min' includes 19 files."</code></p></div></div> + +<p><a id="min-operator-id-join"></a> +<span class="reference-title">join</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>Joins the elements of <span class="kwd">quot</span> using separator <span class="kwd">'sym</span>, producing <span class="kwd">str</span>.</p></div> + +<p><a id="min-operator-id-lambda"></a> <span class="reference-title">lambda</span></p> <div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <span class="kwd">'sym</span> <strong>⇒</strong> ∅</span></p>@@ -3873,18 +4199,19 @@ <p>Defines a new symbol <span class="kwd">'sym</span>, containing the specified quotation <span class="kwd">quot</span>. Unlike with <code>define</code>, in this case <span class="kwd">quot</span> will not be quoted, so its values will be pushed on the stack when the symbol <span class="kwd">'sym</span> is pushed on the stack.</p>
<p>Essentially, this symbol allows you to define an operator without any validation of constraints and bind it to a symbol.</p></div> -<p><span class="reference-title">lambdabind</span></p> - -<div class="operator"><p><span class="kwd"> lambdabind <strong>⇒</strong> lambda-bind</span></p> - -<p>See <a href="#min-operator-id-lambda-bind">lambda-bind</a>.</p></div> - <p><a id="min-operator-id-lambda-bind"></a> <span class="reference-title">lambda-bind</span></p> <div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <span class="kwd">'sym</span> <strong>⇒</strong> ∅</span></p> <p>Binds the specified quotation to an existing symbol <span class="kwd">'sym</span> which was previously-set via <code>lambda</code>.</p></div> + +<p><a id="min-operator-id-length"></a> +<span class="reference-title">length</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> + +<p>Returns the length of <span class="kwd">'sym</span>.</p></div> <p><a id="min-operator-id-line-info"></a> <span class="reference-title">line-info</span></p>@@ -3961,6 +4288,73 @@ <div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">str</span></span></p>
<p>Returns the current log level (debug, info, notice, warn, error or fatal).</p></div> +<p><a id="min-operator-id-lowercase"></a> +<span class="reference-title">lowercase</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>Returns a copy of <span class="kwd">'sym</span> converted to lowercase.</p></div> + +<p><a id="min-operator-id-match?"></a> +<span class="reference-title">match?</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <span class="kwd">str<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">str<sub>2</sub></span> matches <span class="kwd">str<sub>1</sub></span>, <span class="kwd">false</span> otherwise.</p> + +<div class="tip"><p>Tip</p> + +<p><span class="kwd">str<sub>2</sub></span> is a <a href="https://www.pcre.org/">Perl Compatible Regular Expression</a>.</p></div></div> + +<p><a id="min-operator-id-med"></a> +<span class="reference-title">med</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">num</span></span></p> + +<p>Returns the median of the items of <span class="kwd">quot</span>.</p></div> + +<p><a id="min-operator-id-mod"></a> +<span class="reference-title">mod</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>3</sub></span></span></p> + +<p>Returns the integer module of <span class="kwd">int<sub>1</sub></span> divided by <span class="kwd">int<sub>2</sub></span>.</p></div> + +<p><a id="min-operator-id-nan"></a> +<span class="reference-title">nan</span></p> + +<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> nan</span></p> + +<p>Returns <strong>NaN</strong> (not a number).</p></div> + +<p><a id="min-operator-id-not"></a> +<span class="reference-title">not</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">bool<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">bool<sub>2</sub></span></span></p> + +<p>Negates <span class="kwd">bool<sub>1</sub></span>.</p></div> + +<p><a id="min-operator-id-null?"></a> +<span class="reference-title">null?</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is <span class="kwd">null</span>, <span class="kwd">false</span> otherwise.</p></div> + +<p><a id="min-operator-id-number?"></a> +<span class="reference-title">number?</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is a number, <span class="kwd">false</span> otherwise.</p></div> + +<p><a id="min-operator-id-odd?"></a> +<span class="reference-title">odd?</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">int</span> is odd, <span class="kwd">false</span> otherwise.</p></div> + <p><a id="min-operator-id-operator"></a> <span class="reference-title">operator</span></p>@@ -4018,6 +4412,13 @@ <div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">dict</span></span></p>
<p>Returns a dictionary of all options passed to the current program, with their respective values.</p></div> +<p><a id="min-operator-id-ord"></a> +<span class="reference-title">ord</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">str</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> + +<p>Returns the ASCII code <span class="kwd">int</span> corresponding to the single character <span class="kwd">str</span>.</p></div> + <p><a id="min-operator-id-parent-scope"></a> <span class="reference-title">parent-scope</span></p>@@ -4032,6 +4433,20 @@ <div class="operator"><p><span class="kwd"> <span class="kwd">str</span> <strong>⇒</strong> <span class="kwd">quot</span></span></p>
<p>Parses <span class="kwd">str</span> and returns a quoted program <span class="kwd">quot</span>.</p></div> +<p><a id="min-operator-id-parse-url"></a> +<span class="reference-title">parse-url</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">str</span> <strong>⇒</strong> <span class="kwd">dict:url</span></span></p> + +<p>Parses the url <span class="kwd">str</span> into its components and stores them into <span class="kwd">dict:url</span>.</p></div> + +<p><a id="min-operator-id-prefix"></a> +<span class="reference-title">prefix</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym<sub>1</sub></span> <span class="kwd">'sym<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>Prepends <span class="kwd">'sym<sub>2</sub></span> to <span class="kwd">'sym<sub>1</sub></span>.</p></div> + <p><a id="min-operator-id-prefix-dequote"></a> <span class="reference-title">prefix-dequote</span></p>@@ -4053,22 +4468,27 @@ <div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">str</span></span></p>
<p>This symbol is used to configure the prompt of the min shell. By default, it is set to the following quotation:</p> -<pre><code>("[$1]$$ " (.) => %) -</code></pre> +<pre><code>("[$1]$$ " (sys.pwd) => %) +</code></pre></div> + +<p>{#op</p> + +<p>{#op||or||<span class="kwd">bool<sub>1</sub></span> <span class="kwd">bool<sub>2</sub></span>||<span class="kwd">bool<sub>3</sub></span>|| +Returns <span class="kwd">true</span> if <span class="kwd">bool<sub>1</sub></span> or <span class="kwd">bool<sub>2</sub></span> is <span class="kwd">true</span>, <span class="kwd">false</span> otherwise.#}</p> -<p>Unlike other predefined symbols, this symbol is <em>unsealed</em>, which means it can be modified.</p></div> +<p><a id="min-operator-id-pred"></a> +<span class="reference-title">pred</span></p> -<p><a id="min-operator-id-publish"></a> -<span class="reference-title">publish</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>2</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <span class="kwd">dict</span> <strong>⇒</strong> ∅</span></p> +<p>Returns the predecessor of <span class="kwd">int<sub>1</sub></span>.</p></div> -<p>Publishes symbol <span class="kwd">'sym</span> to the scope of <span class="kwd">dict</span>.</p> +<p><a id="min-operator-id-product"></a> +<span class="reference-title">product</span></p> -<div class="sidebar"><p>Example</p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> -<p>Publish symbol <span class="kwd">my-local-symbol</span> to <span class="kwd">global</span> scope: -<code>'my-local-symbol global publish</code></p></div></div> +<p>Returns the product of all items of <span class="kwd">quot</span>. <span class="kwd">quot</span> is a quotation of integers.</p></div> <p><a id="min-operator-id-puts"></a> <span class="reference-title">puts</span></p>@@ -4091,6 +4511,20 @@ <div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> ∅</span></p>
<p>Exits the program or shell with 0 as return code.</p></div> +<p><a id="min-operator-id-quotation?"></a> +<span class="reference-title">quotation?</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is a quotation, <span class="kwd">false</span> otherwise.</p></div> + +<p><a id="min-operator-id-quoted-symbol?"></a> +<span class="reference-title">quoted-symbol?</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is a quoted symbol, <span class="kwd">false</span> otherwise.</p></div> + <p><a id="min-operator-id-quote"></a> <span class="reference-title">quote</span></p>@@ -4112,6 +4546,31 @@ <div class="operator"><p><span class="kwd"> <span class="kwd">str</span> <strong>⇒</strong> (<span class="kwd">sym</span>)</span></p>
<p>Creates a symbol with the value of <span class="kwd">str</span> and wraps it in a quotation.</p></div> +<p><a id="min-operator-id-random"></a> +<span class="reference-title">random</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>2</sub></span></span></p> + +<p>Returns a random number <span class="kwd">int<sub>2</sub></span> between 0 and <span class="kwd">int<sub>1</sub></span>-1.</p> + +<div class="note"><p>Note</p> + +<p>You must call <code>randomize</code> to initialize the random number generator, otherwise the same sequence of numbers will be returned.</p></div></div> + +<p><a id="min-operator-id-randomize"></a> +<span class="reference-title">randomize</span></p> + +<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> {{null}</span></p> + +<p>Initializes the random number generator using a seed based on the current timestamp.</p></div> + +<p><a id="min-operator-id-range"></a> +<span class="reference-title">range</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> + +<p>Takes a quotation <span class="kwd">quot<sub>1</sub></span> of two or three integers in the form of <em>start</em>, <em>end</em> and an optional <em>step</em> (1 if not specified) and generates the sequence and returns the resulting quotation of integers <span class="kwd">quot<sub>2</sub></span>.</p></div> + <p><a id="min-operator-id-raise"></a> <span class="reference-title">raise</span></p>@@ -4133,6 +4592,57 @@ <div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> ∅</span></p>
<p>Removes the symbol <span class="kwd">'sym</span> from the <span class="file">.min_symbols</span> file.</p></div> +<p><a id="min-operator-id-repeat"></a> +<span class="reference-title">repeat</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>Returns <span class="kwd">str</span> containing <span class="kwd">'sym</span> repeated <span class="kwd">int</span> times.</p></div> + +<p><a id="min-operator-id-replace"></a> +<span class="reference-title">replace</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <span class="kwd">str<sub>2</sub></span> <span class="kwd">str<sub>3</sub></span> <strong>⇒</strong> <span class="kwd">str<sub>4</sub></span></span></p> + +<p>Returns a copy of <span class="kwd">str<sub>1</sub></span> containing all occurrences of <span class="kwd">str<sub>2</sub></span> replaced by <span class="kwd">str<sub>3</sub></span></p> + +<div class="tip"><p>Tip</p> + +<p><span class="kwd">str<sub>2</sub></span> is a <a href="https://www.pcre.org/">Perl Compatible Regular Expression</a>.</p></div> + +<div class="sidebar"><p>Example</p> + +<p>The following:</p> + +<p><code>"This is a stupid test. Is it really a stupid test?" " s[a-z]+" " simple" replace</code></p> + +<p>produces:</p> + +<p><code>"This is a simple test. Is it really a simple test?"</code></p></div></div> + +<p><a id="min-operator-id-replace-apply"></a> +<span class="reference-title">replace-apply</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <span class="kwd">str<sub>2</sub></span> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">str<sub>3</sub></span></span></p> + +<p>Returns a copy of <span class="kwd">str<sub>1</sub></span> containing all occurrences of <span class="kwd">str<sub>2</sub></span> replaced by applying <span class="kwd">quot</span> to each quotation corresponding to each match.</p> + +<div class="tip"><p>Tip</p> + +<p><span class="kwd">str<sub>2</sub></span> is a <a href="https://www.pcre.org/">Perl Compatible Regular Expression</a>.</p></div> + +<div class="sidebar"><p>Example</p> + +<p>The following:</p> + +<p><code>":1::2::3::4:" ":(\d):" (1 get :d "-$#-" (d) =%) replace-apply</code></p> + +<p>produces:</p> + +<p><code>"-1--2--3--4-"</code></p> + +<p>Note that for each match the following quotations (each containing the full match and the captured matches) are produced as input for the replace quotation: <code>("-1-" "1") ("-2-" "2") ("-3-" "3") ("-4-" "4")</code></p></div></div> + <p><a id="min-operator-id-require"></a> <span class="reference-title">require</span></p>@@ -4233,6 +4743,88 @@ <div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p>
<p>Returns <span class="kwd">true</span> if the sigil <span class="kwd">'sym</span> is sealed, <span class="kwd">false</span> otherwise.</p></div> +<p><a id="min-operator-id-search"></a> +<span class="reference-title">search</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <span class="kwd">str<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot</span></span></p> + +<p>Returns a quotation containing the first occurrence of <span class="kwd">str<sub>2</sub></span> within <span class="kwd">str<sub>1</sub></span>. Note that:</p> + +<ul> +<li>The first element of <span class="kwd">quot</span> is the matching substring.</li> +<li>Other elements (if any) contain captured substrings.</li> +<li>If no matches are found, the quotation contains empty strings.</li> +</ul> + + +<div class="tip"><p>Tip</p> + +<p><span class="kwd">str<sub>2</sub></span> is a <a href="https://www.pcre.org/">Perl Compatible Regular Expression</a>.</p></div> + +<div class="sidebar"><p>Example</p> + +<p>The following:</p> + +<p><code>"192.168.1.1, 127.0.0.1" "[0-9]+\.[0-9]+\.([0-9]+)\.([0-9]+)" search</code></p> + +<p>produces: <code>("192.168.1.1", "1", "1")</code></p></div></div> + +<p><a id="min-operator-id-search-all"></a> +<span class="reference-title">search-all</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <span class="kwd">str<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot</span></span></p> + +<p>Returns a quotation of quotations (like the one returned by the search operator) containing all occurrences of <span class="kwd">str<sub>2</sub></span> within <span class="kwd">str<sub>1</sub></span>.</p></div> + +<p><a id="min-operator-id-semver-inc-major"></a> +<span class="reference-title">semver-inc-major</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">str<sub>2</sub></span></span></p> + +<p>Increments the major digit of the <a href="https://semver.org">SemVer</a>-compliant string (with no additional labels) <span class="kwd">str<sub>1</sub></span>.</p></div> + +<p><a id="min-operator-id-semver-inc-minor"></a> +<span class="reference-title">semver-inc-minor</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">str<sub>2</sub></span></span></p> + +<p>Increments the minor digit of the <a href="https://semver.org">SemVer</a>-compliant string (with no additional labels) <span class="kwd">str<sub>1</sub></span>.</p></div> + +<p><a id="min-operator-id-semver-inc-patch"></a> +<span class="reference-title">semver-inc-patch</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">str<sub>2</sub></span></span></p> + +<p>Increments the patch digit of the <a href="https://semver.org">SemVer</a>-compliant string (with no additional labels) <span class="kwd">str<sub>1</sub></span>.</p></div> + +<p><a id="min-operator-id-semver?"></a> +<span class="reference-title">semver?</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">str</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Checks whether <span class="kwd">str</span> is a <a href="https://semver.org">SemVer</a>-compliant version or not.</p></div> + +<p><a id="min-operator-id-split"></a> +<span class="reference-title">split</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym<sub>1</sub></span> <span class="kwd">'sym<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot</span></span></p> + +<p>Splits <span class="kwd">'sym<sub>1</sub></span> using separator <span class="kwd">'sym<sub>2</sub></span> (a <a href="https://www.pcre.org/">Perl Compatible Regular Expression</a>) and returns the resulting strings within the quotation <span class="kwd">quot</span>.</p></div> + +<p><a id="min-operator-id-shl"></a> +<span class="reference-title">shl</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>3</sub></span></span></p> + +<p>Computes the <em>shift left</em> operation of <span class="kwd">int<sub>1</sub></span> and <span class="kwd">int<sub>2</sub></span>.</p></div> + +<p><a id="min-operator-id-shr"></a> +<span class="reference-title">shr</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>3</sub></span></span></p> + +<p>Computes the <em>shift right</em> operation of <span class="kwd">int<sub>1</sub></span> and <span class="kwd">int<sub>2</sub></span>.</p></div> + <p><a id="min-operator-id-sigil-help"></a> <span class="reference-title">sigil-help</span></p>@@ -4261,6 +4853,55 @@ <div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">str</span></span></p>
<p>Converts <span class="kwd">a</span> to its string representation.</p></div> +<p><a id="min-operator-id-stringlike?"></a> +<span class="reference-title">stringlike?</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is a string or a quoted symbol, <span class="kwd">false</span> otherwise.</p></div> + +<p><a id="min-operator-id-string?"></a> +<span class="reference-title">string?</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is a string, <span class="kwd">false</span> otherwise.</p></div> + +<p><a id="min-operator-id-strip"></a> +<span class="reference-title">strip</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>Returns <span class="kwd">str</span>, which is set to <span class="kwd">'sym</span> with leading and trailing spaces removed.</p></div> + +<p><a id="min-operator-id-substr"></a> +<span class="reference-title">substr</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">str<sub>2</sub></span></span></p> + +<p>Returns a substring <span class="kwd">str<sub>2</sub></span> obtained by retrieving <span class="kwd">int<sub>2</sub></span> characters starting from index <span class="kwd">int<sub>1</sub></span> within <span class="kwd">str<sub>1</sub></span>.</p></div> + +<p><a id="min-operator-id-succ"></a> +<span class="reference-title">succ</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>2</sub></span></span></p> + +<p>Returns the successor of <span class="kwd">int<sub>1</sub></span>.</p></div> + +<p><a id="min-operator-id-suffix"></a> +<span class="reference-title">suffix</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym<sub>1</sub></span> <span class="kwd">'sym<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>Appends <span class="kwd">'sym<sub>2</sub></span> to <span class="kwd">'sym<sub>1</sub></span>.</p></div> + +<p><a id="min-operator-id-sum"></a> +<span class="reference-title">sum</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> + +<p>Returns the sum of all items of <span class="kwd">quot</span>. <span class="kwd">quot</span> is a quotation of integers.</p></div> + <p><a id="min-operator-id-symbols"></a> <span class="reference-title">symbols</span></p>@@ -4300,8 +4941,8 @@
<p>The following program:</p> <pre><code>{1 :a 2 :b 3 :c} ( - (dup 'a dget succ succ 'a dset) - (dup 'b dget succ 'b dset) + (stack.dup 'a dict.get succ succ 'a dict.set) + (stack.dup 'b dict.get succ 'b dict.set) ) tap </code></pre>@@ -4312,7 +4953,13 @@ <span class="reference-title">times</span></p>
<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">a<sub>*</sub></span></span></p> -<p>Applies the quotation <span class="kwd">quot</span> <span class="kwd">int</span> times.</p></div> +<p>Applies the quotation <span class="kwd">quot</span> <span class="kwd">int</span> times. +<a id="min-operator-id-titleize"></a> +<span class="reference-title">titleize</span></p></div> + +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>Returns a copy of <span class="kwd">'sym</span> in which the first character of each word is capitalized.</p></div> <p><a id="min-operator-id-tokenize"></a> <span class="reference-title">tokenize</span></p>@@ -4321,12 +4968,47 @@ <div class="operator"><p><span class="kwd"> <span class="kwd">str</span> <strong>⇒</strong> <span class="kwd">quot</span></span></p>
<p>Parses the min program <span class="kwd">str</span> and returns a quotation <span class="kwd">quot</span> containing dictionaries with a <code>type</code> symbol and a <code>value</code> symbol for each token.</p></div> +<p><a id="min-operator-id-to-bin"></a> +<span class="reference-title">to-bin</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>Converts <span class="kwd">int</span> to its binary representation.</p></div> + +<p><a id="min-operator-id-to-dec"></a> +<span class="reference-title">to-dec</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>Converts <span class="kwd">int</span> to its decimal representation.</p></div> + +<p><a id="min-operator-id-to-hex"></a> +<span class="reference-title">to-hex</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>Converts <span class="kwd">int</span> to its hexadecimal representation.</p></div> + <p><a id="min-operator-id-to-json"></a> <span class="reference-title">to-json</span></p> <div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> <p>Converts <span class="kwd">a</span> into a JSON string.</p></div> + +<p><a id="min-operator-id-to-oct"></a> +<span class="reference-title">to-oct</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>Converts <span class="kwd">int</span> to its octal representation.</p></div> + +<p><a id="min-operator-id-to-semver"></a> +<span class="reference-title">to-semver</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> + +<p>Given a a dictionary <span class="kwd">dict</span> containing a <strong>major</strong>, <strong>minor</strong>, and <strong>patch</strong> key/value pairs , it pushes a basic <a href="https://semver.org">SemVer</a>-compliant string (with no additional labels) <span class="kwd">str</span> on the stack.</p></div> <p><a id="min-operator-id-to-yaml"></a> <span class="reference-title">to-yaml</span></p>@@ -4360,7 +5042,7 @@
<p>The following program executed on an empty stack prints the message “Insufficient items on the stack” and pushes 0 on the stack:</p> <pre><code> ( - (pop) + (stack.pop) (format-error puts) (0) ) try@@ -4380,6 +5062,13 @@ <div class="operator"><p><span class="kwd"> <span class="kwd">'sym<sub>1</sub></span> <span class="kwd">'sym<sub>2</sub></span> <strong>⇒</strong> ∅</span></p>
<p>Creates a type alias <span class="kwd">'sym<sub>1</sub></span> for type expression <span class="kwd">'sym<sub>2</sub></span>.</p></div> +<p><a id="min-operator-id-type?"></a> +<span class="reference-title">type?</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> + +<p>Returns <span class="kwd">true</span> if the data type of <span class="kwd">a</span> satisfies the specified type expression <span class="kwd">'sym</span>, <span class="kwd">false</span> otherwise.</p></div> + <p><a id="min-operator-id-unless"></a> <span class="reference-title">unless</span></p>@@ -4401,6 +5090,13 @@ <div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> ∅</span></p>
<p>Unseals sigil <span class="kwd">'sym</span>, so that it can be re-defined (system sigils cannot be unsealed).</p></div> +<p><a id="min-operator-id-uppercase"></a> +<span class="reference-title">uppercase</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">'sym<sub>2</sub></span></span></p> + +<p>Returns a copy of <span class="kwd">'sym</span> converted to uppercase.</p></div> + <p><a id="min-operator-id-version"></a> <span class="reference-title">version</span></p>@@ -4438,705 +5134,480 @@ <div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>*</sub></span></span></p>
<p>Pushes each item of <span class="kwd">quot<sub>1</sub></span> on the stack using the scope of <span class="kwd">quot<sub>2</sub></span> as scope.</p></div> -<a id="<code>stack</code>-Module"></a> -<h3><code>stack</code> Module<a href="#document-top" title="Go to top"></a></h3> +<p><a id="min-operator-id-xor"></a> +<span class="reference-title">xor</span></p> -<p><a id="min-operator-id-clear-stack"></a> -<span class="reference-title">clear-stack</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">bool<sub>1</sub></span> <span class="kwd">bool<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool<sub>3</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> ∅</span></p> +<p>Returns <span class="kwd">true</span> if <span class="kwd">bool<sub>1</sub></span> and <span class="kwd">bool<sub>2</sub></span> are different, <span class="kwd">false</span> otherwise.</p></div> -<p>Empties the stack.</p></div> +<a id="<code>crypto</code>-Module"></a> +<h3><code>crypto</code> Module<a href="#document-top" title="Go to top"></a></h3> -<p><a id="min-operator-id-cleave"></a> -<span class="reference-title">cleave</span></p> +<p><a id="min-operator-id-aes"></a> +<span class="reference-title">aes</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> (<span class="kwd">quot</span><span class="kwd"><sub>*</sub></span>) <strong>⇒</strong> <span class="kwd">a<sub>*</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym<sub>1</sub></span> <span class="kwd">'sym<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>Applies each quotation contained in the first element to the second element <span class="kwd">a<sub>1</sub></span>.</p> +<p>Encrypts or decrypts <span class="kwd">'sym<sub>1</sub></span> using the Advanced Encryption Standard (AES) in CTR mode, using <span class="kwd">'sym<sub>2</sub></span> as password.</p></div> -<div class="sidebar"><p>Example</p> +<p><a id="min-operator-id-decode"></a> +<span class="reference-title">decode</span></p> -<p>The following program leaves 2 on the stack:</p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p><code>(1 2 3) ((sum) (size)) cleave /</code></p></div></div> +<p>Decodes the Base64-encoded string <span class="kwd">'sym</span>.</p></div> -<p><a id="min-operator-id-cons"></a> -<span class="reference-title">cons</span></p> +<p><a id="min-operator-id-encode"></a> +<span class="reference-title">encode</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> (<span class="kwd">a<sub>*</sub></span>) <strong>⇒</strong> (<span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>*</sub></span>)</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>Prepends <span class="kwd">a<sub>1</sub></span> to the quotation on top of the stack.</p></div> +<p>Base64-encodes <span class="kwd">'sym</span>.</p></div> -<p><a id="min-operator-id-dip"></a> -<span class="reference-title">dip</span></p> +<p><a id="min-operator-id-md4"></a> +<span class="reference-title">md4</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> (<span class="kwd">a<sub>2</sub></span>) <strong>⇒</strong> <span class="kwd">a<sub>*</sub></span> <span class="kwd">a<sub>1</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>Removes the first and second element from the stack, dequotes the first element, and restores the second element.</p></div> +<p>Returns the MD4 hash of <span class="kwd">'sym</span>.</p></div> -<p><a id="min-operator-id-dup"></a> -<span class="reference-title">dup</span></p> +<p><a id="min-operator-id-md5"></a> +<span class="reference-title">md5</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>1</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>Duplicates the first element on the stack.</p></div> +<p>Returns the MD5 hash of <span class="kwd">'sym</span>.</p></div> -<p><span class="reference-title">getstack</span></p> +<p><a id="min-operator-id-sha1"></a> +<span class="reference-title">sha1</span></p> -<div class="operator"><p><span class="kwd"> getstack <strong>⇒</strong> get-stack</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>See <a href="#min-operator-id-get-stack">get-stack</a>.</p></div> +<p>Returns the SHA1 hash of <span class="kwd">'sym</span>.</p></div> -<p><a id="min-operator-id-get-stack"></a> -<span class="reference-title">get-stack</span></p> +<p><a id="min-operator-id-sha224"></a> +<span class="reference-title">sha224</span></p> -<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> (<span class="kwd">a<sub>*</sub></span>)</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>Puts a quotation containing the contents of the stack on the stack.</p></div> +<p>Returns the SHA224 hash of <span class="kwd">'sym</span>.</p></div> -<p><a id="min-operator-id-id"></a> -<span class="reference-title">id</span></p> +<p><a id="min-operator-id-sha256"></a> +<span class="reference-title">sha256</span></p> -<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> ∅</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>Does nothing.</p></div> +<p>Returns the SHA256 hash of <span class="kwd">'sym</span>.</p></div> -<p><a id="min-operator-id-keep"></a> -<span class="reference-title">keep</span></p> +<p><a id="min-operator-id-sha384"></a> +<span class="reference-title">sha384</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">a<sub>*</sub></span> <span class="kwd">a<sub>1</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>Removes the first element from the stack, dequotes it, and restores the second element.</p> +<p>Returns the SHA384 hash of <span class="kwd">'sym</span>.</p></div> -<div class="sidebar"><p>Example</p> - -<p>The following program leaves <code>5 3</code> on the stack:</p> - -<p><code>2 3 '+ keep</code></p></div></div> - -<p><a id="min-operator-id-nip"></a> -<span class="reference-title">nip</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>2</sub></span></span></p> - -<p>Removes the second element from the stack.</p></div> - -<p><a id="min-operator-id-over"></a> -<span class="reference-title">over</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <span class="kwd">a<sub>1</sub></span></span></p> - -<p>Pushes a copy of the second element on top of the stack.</p></div> - -<p><a id="min-operator-id-pick"></a> -<span class="reference-title">pick</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <span class="kwd">a<sub>3</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <span class="kwd">a<sub>3</sub></span> <span class="kwd">a<sub>1</sub></span></span></p> - -<p>Pushes a copy of the third element on top of the stack.</p></div> - -<p><a id="min-operator-id-pop"></a> -<span class="reference-title">pop</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> ∅</span></p> - -<p>Removes the first element from the stack.</p></div> - -<p><a id="min-operator-id-rolldown"></a> -<span class="reference-title">rolldown</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <span class="kwd">a<sub>3</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>2</sub></span> <span class="kwd">a<sub>3</sub></span> <span class="kwd">a<sub>1</sub></span></span></p> - -<p>Moves the third element in first position, the second in third position and the the first in second position.</p></div> - -<p><a id="min-operator-id-rollup"></a> -<span class="reference-title">rollup</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <span class="kwd">a<sub>3</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>3</sub></span> <span class="kwd">a<sub>2</sub></span> <span class="kwd">a<sub>1</sub></span></span></p> - -<p>Moves the third and second element into second and third position and moves the first element into third position.</p></div> - -<p><span class="reference-title">setstack</span></p> - -<div class="operator"><p><span class="kwd"> setstack <strong>⇒</strong> set-stack</span></p> - -<p>See <a href="#min-operator-id-set-stack">set-stack</a>.</p></div> - -<p><a id="min-operator-id-set-stack"></a> -<span class="reference-title">set-stack</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">a<sub>*</sub></span></span></p> +<p><a id="min-operator-id-sha512"></a> +<span class="reference-title">sha512</span></p> -<p>Substitute the existing stack with the contents of <span class="kwd">quot</span>.</p></div> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p><a id="min-operator-id-sip"></a> -<span class="reference-title">sip</span></p> +<p>Returns the SHA512 hash of <span class="kwd">'sym</span>.</p></div> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>*</sub></span> <span class="kwd">quot<sub>1</sub></span></span></p> +<a id="<code>dict</code>-Module"></a> +<h3><code>dict</code> Module<a href="#document-top" title="Go to top"></a></h3> -<p>Saves the <span class="kwd">quot<sub>1</sub></span>, dequotes <span class="kwd">quot<sub>2</sub></span>, and restores <span class="kwd">quot<sub>1</sub></span>.</p></div> +<p><a id="min-operator-id-dup"></a> +<span class="reference-title">dup</span></p> -<p><a id="min-operator-id-spread"></a> -<span class="reference-title">spread</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>*</sub></span> (<span class="kwd">quot</span><span class="kwd"><sub>*</sub></span>) <strong>⇒</strong> <span class="kwd">a<sub>*</sub></span></span></p> - -<p>Applies each quotation contained in the first element to each subsequent corresponding element.</p> - -<div class="sidebar"><p>Example</p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">dict<sub>2</sub></span></span></p> -<p>The following program leaves <code>(1 4)</code> on the stack:</p> - -<p><code>(1 2) (3 4) ((0 get) (1 get)) spread</code></p></div></div> - -<p><a id="min-operator-id-swap"></a> -<span class="reference-title">swap</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>2</sub></span> <span class="kwd">a<sub>1</sub></span></span></p> - -<p>Swaps the first two elements on the stack.</p></div> - -<p><a id="min-operator-id-swons"></a> -<span class="reference-title">swons</span></p> - -<div class="operator"><p><span class="kwd"> (<span class="kwd">a<sub>*</sub></span>) <span class="kwd">a<sub>1</sub></span> <strong>⇒</strong> (<span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>*</sub></span>)</span></p> - -<p>Prepends <span class="kwd">a<sub>1</sub></span> to the quotation that follows it.</p></div> - -<a id="<code>seq</code>-Module"></a> -<h3><code>seq</code> Module<a href="#document-top" title="Go to top"></a></h3> - -<p><a id="min-operator-id-all?"></a> -<span class="reference-title">all?</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> - -<p>Applies predicate <span class="kwd">quot<sub>2</sub></span> to each element of <span class="kwd">quot<sub>1</sub></span> and returns <span class="kwd">true</span> if all elements of <span class="kwd">quot<sub>1</sub></span> satisfy predicate <span class="kwd">quot<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p></div> - -<p><a id="min-operator-id-any?"></a> -<span class="reference-title">any?</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> - -<p>Applies predicate <span class="kwd">quot<sub>2</sub></span> to each element of <span class="kwd">quot<sub>1</sub></span> and returns <span class="kwd">true</span> if at least one element of <span class="kwd">quot<sub>1</sub></span> satisfies predicate <span class="kwd">quot<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p></div> +<p>Returns a copy of <span class="kwd">dict<sub>1</sub></span>.</p></div> -<p><a id="min-operator-id-append"></a> -<span class="reference-title">append</span></p> +<p><a id="min-operator-id-del"></a> +<span class="reference-title">del</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <span class="kwd">quot</span> <strong>⇒</strong> (<span class="kwd">a<sub>*</sub></span> <span class="kwd">a</span>)</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict</span></span></p> -<p>Returns a new quotation containing the contents of <span class="kwd">quot</span> with <span class="kwd">a</span> appended.</p></div> +<p>Removes <span class="kwd">'sym</span> from <span class="kwd">dict<sub>1</sub></span> and returns <span class="kwd">dict<sub>1</sub></span>.</p></div> <p><a id="min-operator-id-get"></a> <span class="reference-title">get</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">a</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">a</span></span></p> -<p>Returns the <em>n<sup>th</sup></em> element of <span class="kwd">quot</span> (zero-based).</p></div> +<p>Returns the value of key <span class="kwd">'sym</span> from dictionary <span class="kwd">dict</span>.</p></div> -<p><a id="min-operator-id-concat"></a> -<span class="reference-title">concat</span></p> +<p><a id="min-operator-id-get-raw"></a> +<span class="reference-title">get-raw</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict:rawval</span></span></p> -<p>Concatenates <span class="kwd">quot<sub>1</sub></span> with <span class="kwd">quot<sub>2</sub></span>.</p></div> +<p>Returns the value of key <span class="kwd">'sym</span> from dictionary <span class="kwd">dict</span>, wrapped in a <span class="kwd">dict:rawval</span>.</p></div> -<p><a id="min-operator-id-difference"></a> -<span class="reference-title">difference</span></p> +<p><a id="min-operator-id-has?"></a> +<span class="reference-title">has?</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> -<p>Calculates the difference <span class="kwd">quot<sub>3</sub></span> of <span class="kwd">quot<sub>1</sub></span> and <span class="kwd">quot<sub>2</sub></span>.</p> +<p>Returns <span class="kwd">true</span> if dictionary <span class="kwd">dict</span> contains the key <span class="kwd">'sym</span>, <span class="kwd">false</span> otherwise.</p> <div class="sidebar"><p>Example</p> -<p>The following program leaves <code>(2)</code> on the stack:</p> +<p>The following program returns <span class="kwd">true</span>:</p> -<pre><code>(1 2 "test") ("test" "a" true 1) difference +<pre><code>{true :a1 "aaa" :a2 false :a3} 'a2 dict.has? </code></pre></div></div> -<p><a id="min-operator-id-drop"></a> -<span class="reference-title">drop</span></p> +<p><a id="min-operator-id-keys"></a> +<span class="reference-title">keys</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <strong>⇒</strong> (<span class="kwd">str</span><span class="kwd"><sub>*</sub></span>)</span></p> -<p>Returns a quotation <span class="kwd">quot<sub>2</sub></span> containing the remaining elements after the first <em>n</em> values of the input quotation <span class="kwd">quot<sub>1</sub></span>, or an empty quotation if <span class="kwd">int</span> is greater than the length of <span class="kwd">quot<sub>1</sub></span>.</p></div> +<p>Returns a quotation containing all the keys of dictionary <span class="kwd">dict</span>.</p></div> -<p><a id="min-operator-id-filter"></a> -<span class="reference-title">filter</span></p> +<p><a id="min-operator-id-pick"></a> +<span class="reference-title">pick</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict<sub>1</sub></span> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">dict<sub>2</sub></span></span></p> -<p>Returns a new quotation <span class="kwd">quot<sub>3</sub></span> containing all elements of <span class="kwd">quot<sub>1</sub></span> that satisfy predicate <span class="kwd">quot<sub>2</sub></span>.</p> +<p>Returns a new dictionary <span class="kwd">dict<sub>2</sub></span> containing the elements of <span class="kwd">dict<sub>1</sub></span> whose keys are included in <span class="kwd">quot</span>.</p> <div class="sidebar"><p>Example</p> -<p>The following program leaves <code>(2 6 8 12)</code> on the stack:</p> +<p>The following program returns <code>{4 :a 7 :d}</code>:</p> -<pre><code>(1 37 34 2 6 8 12 21) -(dup 20 < swap even? and) filter +<pre><code>{5 :q 4 :a 6 :c 7 :d "d" :a} ("a" "d") dict.pick </code></pre></div></div> -<p><a id="min-operator-id-find"></a> -<span class="reference-title">find</span></p> +<p><a id="min-operator-id-pairs"></a> +<span class="reference-title">pairs</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <strong>⇒</strong> (<span class="kwd">a<sub>*</sub></span>)</span></p> -<p>Returns the index of the first element within <span class="kwd">quot<sub>1</sub></span> that satisfies predicate <span class="kwd">quot<sub>2</sub></span>, or -1 if no element satisfies it.</p> +<p>Returns a quotation containing a quotation for each value/key pair (value first, key second) of dictionary <span class="kwd">dict</span>.</p> <div class="sidebar"><p>Example</p> -<p>The following program leaves <code>3</code> on the stack:</p> +<p>A The following program returns <code>((1 "a") (2 "b"))</code>: + {1 :a 2 :b} dict.pairs +#</p></div></div> -<pre><code>(1 2 4 8 16) -(5 >) find -</code></pre></div></div> +<p><a id="min-operator-id-set"></a> +<span class="reference-title">set</span></p> -<p><a id="min-operator-id-first"></a> -<span class="reference-title">first</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <span class="kwd">a</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict</span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">a</span></span></p> +<p>Sets the value of the <span class="kwd">'sym</span> of <span class="kwd">dict<sub>1</sub></span> to <span class="kwd">a</span>, and returns the modified dictionary <span class="kwd">dict</span>.</p></div> -<p>Returns the first element of <span class="kwd">quot</span>.</p></div> +<p><a id="min-operator-id-set-sym"></a> +<span class="reference-title">set-sym</span></p> -<p><a id="min-operator-id-flatten"></a> -<span class="reference-title">flatten</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <span class="kwd">'sym</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict</span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> +<p>Sets the value of the <span class="kwd">'sym</span> of <span class="kwd">dict<sub>1</sub></span> to <span class="kwd">'sym</span> (treating it as a symbol), and returns the modified dictionary <span class="kwd">dict</span>.</p></div> -<p>Flattens all quotations within <span class="kwd">quot<sub>1</sub></span> and returns the resulting sequence <span class="kwd">quot<sub>2</sub></span>.</p> +<p><a id="min-operator-id-type"></a> +<span class="reference-title">type</span></p> -<div class="sidebar"><p>Example</p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>The following program leaves <code>(1 2 3 4 5 6 7 8)</code> on the stack:</p> +<p>Returns a string set to the type of <span class="kwd">dict</span> (empty if the dictionary has no type).</p></div> -<pre><code>(1 (2 3 4) 5 (6 7) 8) -flatten -</code></pre></div></div> +<p><a id="min-operator-id-values"></a> +<span class="reference-title">values</span></p> -<p><a id="min-operator-id-harvest"></a> -<span class="reference-title">harvest</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <strong>⇒</strong> (<span class="kwd">a<sub>*</sub></span>)</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> +<p>Returns a quotation containing all the values of dictionary <span class="kwd">dict</span>.</p></div> -<p>Creates a new quotation <span class="kwd">quot<sub>2</sub></span> containing all elements of <span class="kwd">quot<sub>1</sub></span> except for empty quotations.</p> +<a id="<code>fs</code>-Module"></a> +<h3><code>fs</code> Module<a href="#document-top" title="Go to top"></a></h3> -<div class="sidebar"><p>Example</p> +<p><a id="min-operator-id-absolute-path"></a> +<span class="reference-title">absolute-path</span></p> -<p>The following program leaves <code>(1 2 3)</code> on the stack:</p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<pre><code>(1 () () () 2 () 3) -harvest -</code></pre></div></div> +<p>Returns the absolute path to <span class="kwd">'sym</span>.</p></div> -<p><a id="min-operator-id-in?"></a> -<span class="reference-title">in?</span></p> +<p><a id="min-operator-id-absolute-path?"></a> +<span class="reference-title">absolute-path?</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> -<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is contained in <span class="kwd">quot</span>, <span class="kwd">false</span> otherwise.</p></div> +<p>Returns <span class="kwd">true</span> if <span class="kwd">'sym</span> is an absolute path.</p></div> -<p><a id="min-operator-id-insert"></a> -<span class="reference-title">insert</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">a</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> - -<p>Inserts <span class="kwd">a</span> as the value of the <em>n<sup>th</sup></em> element <span class="kwd">quot<sub>1</sub></span> (zero-based), and returns the modified copy of the quotation <span class="kwd">quot<sub>2</sub></span>.</p></div> - -<p><a id="min-operator-id-intersection"></a> -<span class="reference-title">intersection</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> - -<p>Calculates the intersection <span class="kwd">quot<sub>3</sub></span> of <span class="kwd">quot<sub>1</sub></span> and <span class="kwd">quot<sub>2</sub></span>.</p> - -<div class="sidebar"><p>Example</p> - -<p>The following program leaves <code>(1 "test")</code> on the stack:</p> - -<pre><code>(1 2 "test") ("test" "a" true 1) intersection -</code></pre></div></div> - -<p><a id="min-operator-id-last"></a> -<span class="reference-title">last</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">a</span></span></p> - -<p>Returns the last element of <span class="kwd">quot</span>.</p></div> - -<p><a id="min-operator-id-map"></a> -<span class="reference-title">map</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> - -<p>Returns a new quotation <span class="kwd">quot<sub>3</sub></span> obtained by applying <span class="kwd">quot<sub>2</sub></span> to each element of <span class="kwd">quot<sub>1</sub></span>.</p></div> - -<p><a id="min-operator-id-map-reduce"></a> -<span class="reference-title">map-reduce</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <span class="kwd">quot<sub>3</sub></span> <strong>⇒</strong> <span class="kwd">int</span></span></p> - -<p>Applies <span class="kwd">quot<sub>2</sub></span> (map) to each element of <span class="kwd">quot<sub>1</sub></span> and then applies <span class="kwd">quot<sub>3</sub></span> (reduce) to each successive element of <span class="kwd">quot<sub>1</sub></span>. <span class="kwd">quot<sub>1</sub></span> must have at least one element.</p> - -<div class="sidebar"><p>Example</p> - -<p>The following program leaves <code>35</code> on the stack:</p> - -<pre><code>(1 3 5) -(dup *) (+) map-reduce -</code></pre></div></div> - -<p><a id="min-operator-id-partition"></a> -<span class="reference-title">partition</span></p> +<p><a id="min-operator-id-atime"></a> +<span class="reference-title">atime</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span> <span class="kwd">quot<sub>4</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">flt</span></span></p> -<p>Partitions <span class="kwd">quot<sub>1</sub></span> into two quotations: <span class="kwd">quot<sub>3</sub></span> contains all elements of <span class="kwd">quot<sub>1</sub></span> that satisfy predicate <span class="kwd">quot<sub>2</sub></span>, <span class="kwd">quot<sub>4</sub></span> all the others.</p> +<p>Returns a timestamp corresponding to the time that file/directory <span class="kwd">'sym</span> was last accessed.</p></div> -<div class="sidebar"><p>Example</p> +<p><a id="min-operator-id-ctime"></a> +<span class="reference-title">ctime</span></p> -<p>The following program leaves <code>(1 3 5) (2 4 6)</code> on the stack:</p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">flt</span></span></p> -<pre><code>(1 2 3 4 5 6) -(odd?) partition -</code></pre></div></div> +<p>Returns a timestamp corresponding to the time that file/directory <span class="kwd">'sym</span> was created.</p></div> -<p><a id="min-operator-id-one?"></a> -<span class="reference-title">one?</span></p> +<p><a id="min-operator-id-dirname"></a> +<span class="reference-title">dirname</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>Applies predicate <span class="kwd">quot<sub>2</sub></span> to each element of <span class="kwd">quot<sub>1</sub></span> and returns <span class="kwd">true</span> if only one element of <span class="kwd">quot<sub>1</sub></span> satisfies predicate <span class="kwd">quot<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p></div> +<p>Returns the path of the directory containing path <span class="kwd">'sym</span>.</p></div> -<p><a id="min-operator-id-prepend"></a> -<span class="reference-title">prepend</span></p> +<p><a id="min-operator-id-dir?"></a> +<span class="reference-title">dir?</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <span class="kwd">quot</span> <strong>⇒</strong> (<span class="kwd">a</span> <span class="kwd">a<sub>*</sub></span>)</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> -<p>Returns a new quotation containing the contents of <span class="kwd">quot</span> with <span class="kwd">a</span> prepended.</p></div> +<p>Returns <span class="kwd">true</span> if the specified path <span class="kwd">'sym</span> exists and is a directory.</p></div> -<p><a id="min-operator-id-quote-map"></a> -<span class="reference-title">quote-map</span></p> +<p><a id="min-operator-id-exists?"></a> +<span class="reference-title">exists?</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> -<p>Returns a new quotation <span class="kwd">quot<sub>2</sub></span> obtained by quoting each element of <span class="kwd">quot<sub>1</sub></span>.</p></div> +<p>Returns <span class="kwd">true</span> if the specified file or directory <span class="kwd">'sym</span> exists.</p></div> -<p><a id="min-operator-id-raw-get"></a> -<span class="reference-title">raw-get</span></p> +<p><a id="min-operator-id-expand-filename"></a> +<span class="reference-title">expand-filename</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">dict:rawval</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>Returns the <em>n<sup>th</sup></em> element of <span class="kwd">quot</span> (zero-based) wrapped in a <span class="kwd">dict:rawval</span>.</p></div> +<p>Returns the absolute path to the file name <span class="kwd">'sym</span>.</p></div> -<p><a id="min-operator-id-reduce"></a> -<span class="reference-title">reduce</span></p> +<p><a id="min-operator-id-expand-symlink"></a> +<span class="reference-title">expand-symlink</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">a<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>2</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>Combines each successive element of <span class="kwd">quot<sub>1</sub></span> using <span class="kwd">quot<sub>2</sub></span>. On the first iteration, the first two inputs processed by <span class="kwd">quot<sub>2</sub></span> are <span class="kwd">a<sub>1</sub></span> and the first element of <span class="kwd">quot<sub>1</sub></span>.</p> +<p>Returns the absolute path to the symlink <span class="kwd">'sym</span> (an error is raised if <span class="kwd">'sym</span> is not a symlink).</p></div> -<div class="sidebar"><p>Example</p> +<p><a id="min-operator-id-file?"></a> +<span class="reference-title">file?</span></p> -<p>The following program leaves <code>120</code> on the stack:</p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> -<pre><code>(1 2 3 4 5) -1 (*) reduce -</code></pre></div></div> +<p>Returns <span class="kwd">true</span> if the specified path <span class="kwd">'sym</span> exists and is a file.</p></div> -<p><a id="min-operator-id-reject"></a> -<span class="reference-title">reject</span></p> +<p><a id="min-operator-id-filename"></a> +<span class="reference-title">filename</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>Returns a new quotatios <span class="kwd">quot<sub>3</sub></span> including all elements of <span class="kwd">quot<sub>1</sub></span> that do not satisfy predicate <span class="kwd">quot<sub>2</sub></span> (i.e. the opposite of <code>filter</code>)</p></div> +<p>Returns the file name of path <span class="kwd">'sym</span>.</p></div> -<p><a id="min-operator-id-remove"></a> -<span class="reference-title">remove</span></p> +<p><a id="min-operator-id-hidden?"></a> +<span class="reference-title">hidden?</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> -<p>Returns the <em>n<sup>th</sup></em> element of <span class="kwd">quot<sub>1</sub></span> (zero-based), and returns the modified copy of the quotation <span class="kwd">quot<sub>2</sub></span>.</p></div> +<p>Returns <span class="kwd">true</span> if file/directory <span class="kwd">'sym</span> is hidden, <span class="kwd">false</span> otherwise.</p></div> -<p><a id="min-operator-id-rest"></a> -<span class="reference-title">rest</span></p> +<p><a id="min-operator-id-join-path"></a> +<span class="reference-title">join-path</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>Returns a new quotation <span class="kwd">quot<sub>2</sub></span> containing all elements of <span class="kwd">quot<sub>1</sub></span> quotation except for the first.</p></div> +<p>Joins the strings contained in <span class="kwd">quot</span> with <code>/</code>.</p></div> -<p><a id="min-operator-id-reverse"></a> -<span class="reference-title">reverse</span></p> +<p><a id="min-operator-id-normalized-path"></a> +<span class="reference-title">normalized-path</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>Returns a new quotation <span class="kwd">quot<sub>2</sub></span> containing all elements of <span class="kwd">quot<sub>1</sub></span> in reverse order.</p></div> +<p>Returns the normalized path to <span class="kwd">'sym</span>.</p></div> -<p><a id="min-operator-id-set"></a> -<span class="reference-title">set</span></p> +<p><a id="min-operator-id-mtime"></a> +<span class="reference-title">mtime</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">a</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">flt</span></span></p> -<p>Sets the value of the <em>n<sup>th</sup></em> element <span class="kwd">quot<sub>1</sub></span> (zero-based) to <span class="kwd">a</span>, and returns the modified copy of the quotation <span class="kwd">quot<sub>2</sub></span>.</p></div> +<p>Returns a timestamp corresponding to the time that file/directory <span class="kwd">'sym</span> was last modified.</p></div> -<p><a id="min-operator-id-set-sym"></a> -<span class="reference-title">set-sym</span></p> +<p><a id="min-operator-id-permissions"></a> +<span class="reference-title">permissions</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">'sym</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> -<p>Sets the value of the <em>n<sup>th</sup></em> element <span class="kwd">quot<sub>1</sub></span> (zero-based) to <span class="kwd">'sym</span> (treating it as a symbol), and returns the modified copy of the quotation <span class="kwd">quot<sub>2</sub></span>.</p></div> +<p>Returns the Unix permissions (expressed as a three-digit number) of file/directory <span class="kwd">'sym</span>.</p></div> -<p><a id="min-operator-id-shorten"></a> -<span class="reference-title">shorten</span></p> +<p><a id="min-operator-id-relative-path"></a> +<span class="reference-title">relative-path</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym<sub>1</sub></span> <span class="kwd">'sym<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>Returns a quotation <span class="kwd">quot<sub>2</sub></span> containing the first <em>n</em> values of the input quotation <span class="kwd">quot<sub>1</sub></span>.</p></div> +<p>Returns the path of <span class="kwd">'sym<sub>1</sub></span> relative to <span class="kwd">'sym<sub>2</sub></span>.</p></div> <p><a id="min-operator-id-size"></a> <span class="reference-title">size</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> -<p>Returns the length of <span class="kwd">quot</span>.</p></div> +<p>Returns the size in bytes of file/directory <span class="kwd">'sym</span>.</p></div> -<p><a id="min-operator-id-slice"></a> -<span class="reference-title">slice</span></p> +<p><a id="min-operator-id-stats"></a> +<span class="reference-title">stats</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict</span></span></p> -<p>Creates a new quotation <span class="kwd">quot<sub>2</sub></span> obtaining by selecting all elements of <span class="kwd">quot<sub>1</sub></span> between indexes <span class="kwd">int<sub>1</sub></span> and <span class="kwd">int<sub>2</sub></span>.</p> +<p>Returns a dictionary <span class="kwd">dict</span> containing information on file/directory <span class="kwd">'sym</span>.</p> <div class="sidebar"><p>Example</p> -<p>The following program leaves <code>(3 4 5)</code> on the stack:</p> +<p>Assuming that <code>min</code> is a file, the following:</p> -<pre><code>(1 2 3 4 5 6) -2 4 slice -</code></pre></div></div> +<p><code>"min" fs.stats</code></p> -<p><a id="min-operator-id-sort"></a> -<span class="reference-title">sort</span></p> +<p>produces:</p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> - -<p>Sorts all elements of <span class="kwd">quot<sub>1</sub></span> according to predicate <span class="kwd">quot<sub>2</sub></span>.</p> - -<div class="sidebar"><p>Example</p> - -<p>The following program leaves <code>(1 3 5 7 9 13 16)</code> on the stack:</p> - -<pre><code>(1 9 5 13 16 3 7) '> sort -</code></pre></div></div> - -<p><a id="min-operator-id-symmetric-difference"></a> -<span class="reference-title">symmetric-difference</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> - -<p>Calculates the symmetric difference <span class="kwd">quot<sub>3</sub></span> of <span class="kwd">quot<sub>1</sub></span> and <span class="kwd">quot<sub>2</sub></span>.</p> - -<div class="sidebar"><p>Example</p> - -<p>The following program leaves <code>(true "a" 2)</code> on the stack:</p> - -<pre><code>(1 2 "test") ("test" "a" true 1) symmetric-difference +<pre><code> { + "min" :name + 16777220 :device + 50112479 :file + "file" :type + 617068 :size + 755 :permissions + 1 :nlinks + 1496583112.0 :ctime + 1496584370.0 :atime + 1496583112.0 :mtime + } </code></pre></div></div> -<p><a id="min-operator-id-take"></a> -<span class="reference-title">take</span></p> +<p><a id="min-operator-id-symlink?"></a> +<span class="reference-title">symlink?</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> -<p>Returns a quotation <span class="kwd">quot<sub>2</sub></span> containing the first <em>n</em> values of the input quotation <span class="kwd">quot<sub>1</sub></span>, or <span class="kwd">quot<sub>1</sub></span> itself if <span class="kwd">int</span> is greater than the length of <span class="kwd">quot<sub>1</sub></span>.</p></div> +<p>Returns <span class="kwd">true</span> if the specified path <span class="kwd">'sym</span> exists and is a symbolic link.</p></div> -<p><a id="min-operator-id-union"></a> -<span class="reference-title">union</span></p> +<p><a id="min-operator-id-type"></a> +<span class="reference-title">type</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>Calculates the union <span class="kwd">quot<sub>3</sub></span> of <span class="kwd">quot<sub>1</sub></span> and <span class="kwd">quot<sub>2</sub></span>.</p> +<p>Returns the type of file/directory <span class="kwd">'sym</span> (<code>"file"</code> or <code>"dir"</code>).</p></div> -<div class="sidebar"><p>Example</p> +<p><a id="min-operator-id-unix-path"></a> +<span class="reference-title">unix-path</span></p> -<p>The following program leaves <code>(true 1 "test" "a" 2)</code> on the stack:</p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<pre><code>(1 2 "test") ("test" "a" true 1) union -</code></pre></div></div> - -<a id="<code>dict</code>-Module"></a> -<h3><code>dict</code> Module<a href="#document-top" title="Go to top"></a></h3> - -<p><a id="min-operator-id-ddup"></a> -<span class="reference-title">ddup</span></p> +<p>Converts all backslashes in <span class="kwd">'sym</span> to slashes.</p></div> -<div class="operator"><p><span class="kwd"> <span class="kwd">dict<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">dict<sub>2</sub></span></span></p> +<p><a id="min-operator-id-windows-path"></a> +<span class="reference-title">windows-path</span></p> -<p>Returns a copy of <span class="kwd">dict<sub>1</sub></span>.</p></div> - -<p><a id="min-operator-id-ddel"></a> -<span class="reference-title">ddel</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict</span></span></p> +<p>Converts all slashes in <span class="kwd">'sym</span> to backslashes.</p></div> -<p>Removes <span class="kwd">'sym</span> from <span class="kwd">dict<sub>1</sub></span> and returns <span class="kwd">dict<sub>1</sub></span>.</p></div> +<a id="<code>http</code>-Module"></a> +<h3><code>http</code> Module<a href="#document-top" title="Go to top"></a></h3> -<p><a id="min-operator-id-dget"></a> -<span class="reference-title">dget</span></p> +<p><a id="min-operator-id-download"></a> +<span class="reference-title">download</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">a</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <span class="kwd">str<sub>2</sub></span> <strong>⇒</strong> ∅</span></p> -<p>Returns the value of key <span class="kwd">'sym</span> from dictionary <span class="kwd">dict</span>.</p></div> +<p>Downloads the contents of URL <span class="kwd">str<sub>1</sub></span> to the local file <span class="kwd">str<sub>2</sub></span>.</p></div> -<p><a id="min-operator-id-dget-raw"></a> -<span class="reference-title">dget-raw</span></p> +<p><a id="min-operator-id-get-content"></a> +<span class="reference-title">get-content</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict:rawval</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">str<sub>2</sub></span></span></p> -<p>Returns the value of key <span class="kwd">'sym</span> from dictionary <span class="kwd">dict</span>, wrapped in a <span class="kwd">dict:rawval</span>.</p></div> +<p>Retrieves the contents of URL <span class="kwd">str<sub>1</sub></span> as <span class="kwd">str<sub>2</sub></span>.</p></div> -<p><a id="min-operator-id-dhas?"></a> -<span class="reference-title">dhas?</span></p> +<p><a id="min-operator-id-request"></a> +<span class="reference-title">request</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <strong>⇒</strong> <span class="kwd">dict:http-response</span></span></p> -<p>Returns <span class="kwd">true</span> if dictionary <span class="kwd">dict</span> contains the key <span class="kwd">'sym</span>, <span class="kwd">false</span> otherwise.</p> +<p>Performs an HTTP request. Note that <span class="kwd">dict</span> is can be a standard (untyped) dictionary but its fields will be validated like if it was a <span class="kwd">dict:http-request</span>.</p> <div class="sidebar"><p>Example</p> -<p>The following program returns <span class="kwd">true</span>:</p> +<p>The following code constructs <span class="kwd">dict</span> and passes it to the <strong>request</strong> operator to perform an HTTP GET request to <a href="http://httpbin.org/ip">http://httpbin.org/ip</a>:</p> -<pre><code>{true :a1 "aaa" :a2 false :a3} 'a2 dhas? +<pre><code>{} + "GET" 'method dict.get + "http://httpbin.org/ip" 'url dict.set +request </code></pre></div></div> -<p><a id="min-operator-id-dkeys"></a> -<span class="reference-title">dkeys</span></p> +<p><a id="min-operator-id-start-server"></a> +<span class="reference-title">start-server</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <strong>⇒</strong> (<span class="kwd">str</span><span class="kwd"><sub>*</sub></span>)</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <strong>⇒</strong> ∅</span></p> -<p>Returns a quotation containing all the keys of dictionary <span class="kwd">dict</span>.</p></div> - -<p><a id="min-operator-id-dpick"></a> -<span class="reference-title">dpick</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict<sub>1</sub></span> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">dict<sub>2</sub></span></span></p> - -<p>Returns a new dictionary <span class="kwd">dict<sub>2</sub></span> containing the elements of <span class="kwd">dict<sub>1</sub></span> whose keys are included in <span class="kwd">quot</span>.</p> - -<div class="sidebar"><p>Example</p> - -<p>The following program returns <code>{4 :a 7 :d}</code>:</p> - -<pre><code>{5 :q 4 :a 6 :c 7 :d "d" :a} ("a" "d") dpick -</code></pre></div></div> +<p>Starts an HTTP server based on the configuration provided in <span class="kwd">dict</span>.</p> -<p><a id="min-operator-id-dpairs"></a> -<span class="reference-title">dpairs</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <strong>⇒</strong> (<span class="kwd">a<sub>*</sub></span>)</span></p> +<p><span class="kwd">dict</span> is a dictionary containing the following keys:</p> -<p>Returns a quotation containing a quotation for each value/key pair (value first, key second) of dictionary <span class="kwd">dict</span>.</p> +<dl> +<dt>address</dt> +<dd>The address to bind the server to (default: <strong>127.0.0.1</strong>).</dd> +<dt>port</dt> +<dd>The port to bind the server to.</dd> +<dt>handler</dt> +<dd>A quotation with the following signature, used to handle all incoming requests: <span class="kwd"><span class="kwd">dict:http-request</span> ⇒ <span class="kwd">dict:http-response</span></span></dd> +</dl> <div class="sidebar"><p>Example</p> -<p>A The following program returns <code>((1 "a") (2 "b"))</code>: - {1 :a 2 :b} dpairs -#</p></div></div> - -<p><a id="min-operator-id-dset"></a> -<span class="reference-title">dset</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <span class="kwd">a</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict</span></span></p> - -<p>Sets the value of the <span class="kwd">'sym</span> of <span class="kwd">dict<sub>1</sub></span> to <span class="kwd">a</span>, and returns the modified dictionary <span class="kwd">dict</span>.</p></div> - -<p><a id="min-operator-id-dset-sym"></a> -<span class="reference-title">dset-sym</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <span class="kwd">'sym</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict</span></span></p> - -<p>Sets the value of the <span class="kwd">'sym</span> of <span class="kwd">dict<sub>1</sub></span> to <span class="kwd">'sym</span> (treating it as a symbol), and returns the modified dictionary <span class="kwd">dict</span>.</p></div> - -<p><a id="min-operator-id-dtype"></a> -<span class="reference-title">dtype</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> - -<p>Returns a string set to the type of <span class="kwd">dict</span> (empty if the dictionary has no type).</p></div> - -<p><a id="min-operator-id-dvalues"></a> -<span class="reference-title">dvalues</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <strong>⇒</strong> (<span class="kwd">a<sub>*</sub></span>)</span></p> - -<p>Returns a quotation containing all the values of dictionary <span class="kwd">dict</span>.</p></div> - -<a id="<code>dstore</code>-Module"></a> -<h3><code>dstore</code> Module<a href="#document-top" title="Go to top"></a></h3> - -<p><a id="min-operator-id-dsdelete"></a> -<span class="reference-title">dsdelete</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict:datastore</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict:datastore</span></span></p> - -<p>Removes an item from the datastore <span class="kwd">dict:datastore</span>. The item is uniquely identified by <span class="kwd">'sym</span>, which contains the collection containing the item and the item id, separated by a forward slash (/). Puts the reference to the modified datastore back on tbe stack.</p></div> - -<p><a id="min-operator-id-dsget"></a> -<span class="reference-title">dsget</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict:datastore</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict</span></span></p> - -<p>Retrieves item <span class="kwd">dict</span> from datastore <span class="kwd">dict:datastore</span>. <span class="kwd">dict</span> is retrieved by specifying <span class="kwd">'sym</span>, which contains the collection containing the item and the item id, separated by a forward slash (/).</p></div> - -<p><a id="min-operator-id-dsinit"></a> -<span class="reference-title">dsinit</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict:datastore</span></span></p> - -<p>Initializes a bew datastore by creating the <span class="kwd">'sym</span> JSON file. Puts the datastore instance on the stack.</p></div> +<p>The following program starts a very simple HTTP server that can display the current timestamp or date and time in ISO 8601 format:</p> -<p><a id="min-operator-id-dspost"></a> -<span class="reference-title">dspost</span></p> +<pre><code>; Define the request handler +( + ; Assume there is a request on the stack, take it off and give it the name req + :req + ; Let's see what we got (print req to standard out) + "THE REQUEST:" puts! req puts! + ; The request is a dictionary, we retrieve the value for the key url, and give it the name url + req /url :url + "THE URL is '$1'." url quote % puts! + ; Constuct response body + ( + (("/datetime" url ==) (time.stamp time.datetime)) + (("/timestamp" url ==) (time.stamp string)) + (("/shutdown" url ==) ("Stopping server..." puts! stop-server)) + (("/" url ==) ( + ; this is a bit short, but works with Chrome, IE, Edge, Safari + "<a href='/datetime'>datetime</a>, <a href='/timestamp'>timestamp</a>, <a href='/shutdown'>stop</a>" + )) + ((true) ("Invalid Request: $1" url quote %)) + ) case + :body + ; Prepare the response + {} body 'body dict.set + stack.dup puts! +) +; The request handler is ready, give it the name handler +:handler -<div class="operator"><p><span class="kwd"> <span class="kwd">dict:datastore</span> <span class="kwd">'sym</span> <span class="kwd">dict</span> <strong>⇒</strong> <span class="kwd">dict:datastore</span></span></p> - -<p>Adds the dictionary <span class="kwd">dict</span> to the datastore <span class="kwd">dict:datastore</span> inside collection <span class="kwd">'sym</span>, generating and adding a unique <strong>id</strong> field to <span class="kwd">dict</span>. If the collection <span class="kwd">'sym</span> does not exist it is created. Puts the reference to the modified datastore back on tbe stack.</p></div> - -<p><a id="min-operator-id-dsput"></a> -<span class="reference-title">dsput</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict:datastore</span> <span class="kwd">'sym</span> <span class="kwd">dict</span> <strong>⇒</strong> <span class="kwd">dict:datastore</span></span></p> - -<p>Adds the dictionary <span class="kwd">dict</span> to the datastore <span class="kwd">dict:datastore</span>. <span class="kwd">'sym</span> contains the collection where <span class="kwd">dict</span> will be placed and the id of <span class="kwd">dict</span>, separated by a forward slash (/). If the collection <span class="kwd">'sym</span> does not exist it is created. Puts the reference to the modified datastore back on tbe stack.</p></div> - -<p><a id="min-operator-id-dsquery"></a> -<span class="reference-title">dsquery</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict:datastore</span> <span class="kwd">'sym</span> <span class="kwd">quot</span> <strong>⇒</strong> (<span class="kwd">dict<sub>*</sub></span>)</span></p> - -<p>Retrieves a quotation of dictionaries from the collection <span class="kwd">'sym</span> of datastore <span class="kwd">dict:datastore</span> obtained by applying <span class="kwd">quot</span> as a filter to each item of the collection, picking only the elements that match the filter.</p> - -<div class="sidebar"><p>Example</p> - -<p>Assuming that <strong>ds</strong> is a datastore, the following program retrieves all elements of teh collection <strong>posts</strong> whose author field is set to “h3rald”:</p> +; Create the parameter dictionary for the server +{} +handler 'handler dict.set +5555 'port dict.set -<pre><code> ds "posts" ('author dget "h3rald" ==) dsquery +; Start server +"Server started on port 5555." puts! +"Press Ctrl+C to stop." puts! +start-server </code></pre></div></div> -<p><a id="min-operator-id-dsread"></a> -<span class="reference-title">dsread</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict:datastore</span></span></p> - -<p>Reads the previously-created datastore from the file <span class="kwd">'sym</span> and puts the resulting datastore instance on the stack.</p></div> +<p><a id="min-operator-id-stop-server"></a> +<span class="reference-title">stop-server</span></p> -<p><a id="min-operator-id-dswrite"></a> -<span class="reference-title">dswrite</span></p> +<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> ∅</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">dict:datastore</span> <strong>⇒</strong> <span class="kwd">dict:datastore</span></span></p> - -<p>Writes the contents of the datastore <span class="kwd">dict:datastore</span> to the filesystem.</p></div> +<p>Stops the currently-running HTTP server. This operator should be used within an HTTP server handler quotation.</p></div> <a id="<code>io</code>-Module"></a> <h3><code>io</code> Module<a href="#document-top" title="Go to top"></a></h3>@@ -5267,17 +5738,10 @@ <div class="sidebar"><p>Example</p>
<p>The following program:</p> -<pre><code>(clear) 'ctrl+l mapkey +<pre><code>(clear) 'ctrl+l io.mapkey </code></pre> <p>causes the <code>CTRL+L</code> key to clear the screen.</p></div></div> - -<p><a id="min-operator-id-newline"></a> -<span class="reference-title">newline</span></p> - -<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> ∅</span></p> - -<p>Prints a new line to STDOUT.</p></div> <p><a id="min-operator-id-notice"></a> <span class="reference-title">notice</span></p>@@ -5348,744 +5812,913 @@ <div class="operator"><p><span class="kwd"> write <strong>⇒</strong> fwrite</span></p>
<p>See <a href="#min-operator-id-fwrite">fwrite</a>.</p></div> -<a id="<code>fs</code>-Module"></a> -<h3><code>fs</code> Module<a href="#document-top" title="Go to top"></a></h3> +<a id="<code>math</code>-Module"></a> +<h3><code>math</code> Module<a href="#document-top" title="Go to top"></a></h3> -<p><a id="min-operator-id-absolute-path"></a> -<span class="reference-title">absolute-path</span></p> +<p><a id="min-operator-id-abs"></a> +<span class="reference-title">abs</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p>Returns the absolute path to <span class="kwd">'sym</span>.</p></div> +<p>Calculates tbe absolute value of <span class="kwd">num<sub>1</sub></span>.</p></div> -<p><a id="min-operator-id-absolute-path?"></a> -<span class="reference-title">absolute-path?</span></p> +<p><a id="min-operator-id-acos"></a> +<span class="reference-title">acos</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p>Returns <span class="kwd">true</span> if <span class="kwd">'sym</span> is an absolute path.</p></div> +<p>Calculates the arc cosine of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> -<p><a id="min-operator-id-atime"></a> -<span class="reference-title">atime</span></p> +<p><a id="min-operator-id-asin"></a> +<span class="reference-title">asin</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">flt</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p>Returns a timestamp corresponding to the time that file/directory <span class="kwd">'sym</span> was last accessed.</p></div> +<p>Calculates the arc sine of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> -<p><a id="min-operator-id-ctime"></a> -<span class="reference-title">ctime</span></p> +<p><a id="min-operator-id-atan"></a> +<span class="reference-title">atan</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">flt</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p>Returns a timestamp corresponding to the time that file/directory <span class="kwd">'sym</span> was created.</p></div> +<p>Calculates the arc tangent of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> -<p><a id="min-operator-id-dirname"></a> -<span class="reference-title">dirname</span></p> +<p><a id="min-operator-id-ceil"></a> +<span class="reference-title">ceil</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">num</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> -<p>Returns the path of the directory containing path <span class="kwd">'sym</span>.</p></div> +<p>Returns the smallest integer <span class="kwd">int</span> that is not smaller than <span class="kwd">num</span>.</p></div> -<p><a id="min-operator-id-dir?"></a> -<span class="reference-title">dir?</span></p> +<p><a id="min-operator-id-cos"></a> +<span class="reference-title">cos</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p>Returns <span class="kwd">true</span> if the specified path <span class="kwd">'sym</span> exists and is a directory.</p></div> +<p>Calculates the cosine of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> -<p><a id="min-operator-id-exists?"></a> -<span class="reference-title">exists?</span></p> +<p><a id="min-operator-id-cosh"></a> +<span class="reference-title">cosh</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p>Returns <span class="kwd">true</span> if the specified file or directory <span class="kwd">'sym</span> exists.</p></div> +<p>Calculates the hyperbolic cosine of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> -<p><a id="min-operator-id-expand-filename"></a> -<span class="reference-title">expand-filename</span></p> +<p><a id="min-operator-id-d2r"></a> +<span class="reference-title">d2r</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p>Returns the absolute path to the file name <span class="kwd">'sym</span>.</p></div> +<p>Converts <span class="kwd">num<sub>1</sub></span> from degrees to radians.</p></div> -<p><a id="min-operator-id-expand-symlink"></a> -<span class="reference-title">expand-symlink</span></p> +<p><a id="min-operator-id-e"></a> +<span class="reference-title">e</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">num</span></span></p> -<p>Returns the absolute path to the symlink <span class="kwd">'sym</span> (an error is raised if <span class="kwd">'sym</span> is not a symlink).</p></div> +<p>Returns the value of the <em>e</em> constant (Euler’s number).</p></div> -<p><a id="min-operator-id-file?"></a> -<span class="reference-title">file?</span></p> +<p><a id="min-operator-id-floor"></a> +<span class="reference-title">floor</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">num</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> -<p>Returns <span class="kwd">true</span> if the specified path <span class="kwd">'sym</span> exists and is a file.</p></div> +<p>Returns the largest integer <span class="kwd">int</span> that is not greater than <span class="kwd">num</span>.</p></div> -<p><a id="min-operator-id-filename"></a> -<span class="reference-title">filename</span></p> +<p><a id="min-operator-id-ln"></a> +<span class="reference-title">ln</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p>Returns the file name of path <span class="kwd">'sym</span>.</p></div> +<p>Calculates the natural logarithm of <span class="kwd">num<sub>1</sub></span>.</p></div> -<p><a id="min-operator-id-fperms"></a> -<span class="reference-title">fperms</span></p> +<p><a id="min-operator-id-log10"></a> +<span class="reference-title">log10</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p>Returns the Unix permissions (expressed as a three-digit number) of file/directory <span class="kwd">'sym</span>.</p></div> +<p>Calculates the common logarithm of <span class="kwd">num<sub>1</sub></span>.</p></div> -<p><a id="min-operator-id-fsize"></a> -<span class="reference-title">fsize</span></p> +<p><a id="min-operator-id-log2"></a> +<span class="reference-title">log2</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p>Returns the size in bytes of file/directory <span class="kwd">'sym</span>.</p></div> +<p>Calculates the binary logarithm of <span class="kwd">num<sub>1</sub></span>.</p></div> -<p><a id="min-operator-id-fstats"></a> -<span class="reference-title">fstats</span></p> +<p><a id="min-operator-id-pi"></a> +<span class="reference-title">pi</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict</span></span></p> +<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">num</span></span></p> -<p>Returns a dictionary <span class="kwd">dict</span> containing information on file/directory <span class="kwd">'sym</span>.</p> +<p>Returns the value of the π constant.</p></div> -<div class="sidebar"><p>Example</p> +<p><a id="min-operator-id-pow"></a> +<span class="reference-title">pow</span></p> -<p>Assuming that <code>min</code> is a file, the following:</p> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <span class="kwd">num<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>3</sub></span></span></p> -<p><code>"min" fstats</code></p> +<p>Computes <span class="kwd">num<sub>1</sub></span> to power raised of <span class="kwd">num<sub>2</sub></span>.</p></div> -<p>produces:</p> +<p><a id="min-operator-id-r2d"></a> +<span class="reference-title">r2d</span></p> -<pre><code> { - "min" :name - 16777220 :device - 50112479 :file - "file" :type - 617068 :size - 755 :permissions - 1 :nlinks - 1496583112.0 :ctime - 1496584370.0 :atime - 1496583112.0 :mtime - } -</code></pre></div></div> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p><a id="min-operator-id-ftype"></a> -<span class="reference-title">ftype</span></p> +<p>Converts <span class="kwd">num<sub>1</sub></span> from radians to degrees.</p></div> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<p><a id="min-operator-id-round"></a> +<span class="reference-title">round</span></p> -<p>Returns the type of file/directory <span class="kwd">'sym</span> (<code>"file"</code> or <code>"dir"</code>).</p></div> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p><a id="min-operator-id-hidden?"></a> -<span class="reference-title">hidden?</span></p> +<p>Rounds <span class="kwd">num<sub>1</sub></span> to the <span class="kwd">int</span><sup>th</sup> decimal place.</p></div> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<p><a id="min-operator-id-sin"></a> +<span class="reference-title">sin</span></p> -<p>Returns <span class="kwd">true</span> if file/directory <span class="kwd">'sym</span> is hidden, <span class="kwd">false</span> otherwise.</p></div> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p><a id="min-operator-id-join-path"></a> -<span class="reference-title">join-path</span></p> +<p>Calculates the sine of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<p><a id="min-operator-id-sinh"></a> +<span class="reference-title">sinh</span></p> -<p>Joins the strings contained in <span class="kwd">quot</span> with <code>/</code>.</p></div> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p><a id="min-operator-id-normalized-path"></a> -<span class="reference-title">normalized-path</span></p> +<p>Calculates the hyperbolic sine of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<p><a id="min-operator-id-sqrt"></a> +<span class="reference-title">sqrt</span></p> -<p>Returns the normalized path to <span class="kwd">'sym</span>.</p></div> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p><a id="min-operator-id-mtime"></a> -<span class="reference-title">mtime</span></p> +<p>Returns square root of <span class="kwd">num<sub>1</sub></span>.</p></div> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">flt</span></span></p> +<p><a id="min-operator-id-tan"></a> +<span class="reference-title">tan</span></p> -<p>Returns a timestamp corresponding to the time that file/directory <span class="kwd">'sym</span> was last modified.</p></div> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p><a id="min-operator-id-relative-path"></a> -<span class="reference-title">relative-path</span></p> +<p>Calculates the tangent of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym<sub>1</sub></span> <span class="kwd">'sym<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<p><a id="min-operator-id-tanh"></a> +<span class="reference-title">tanh</span></p> -<p>Returns the path of <span class="kwd">'sym<sub>1</sub></span> relative to <span class="kwd">'sym<sub>2</sub></span>.</p></div> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p><a id="min-operator-id-symlink?"></a> -<span class="reference-title">symlink?</span></p> +<p>Calculates the hyperbolic tangent of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<p><a id="min-operator-id-tau"></a> +<span class="reference-title">tau</span></p> -<p>Returns <span class="kwd">true</span> if the specified path <span class="kwd">'sym</span> exists and is a symbolic link.</p></div> +<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">num</span></span></p> -<p><a id="min-operator-id-unix-path"></a> -<span class="reference-title">unix-path</span></p> +<p>Returns the value of the τ constant (2π).</p></div> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<p><a id="min-operator-id-trunc"></a> +<span class="reference-title">trunc</span></p> -<p>Converts all backslashes in <span class="kwd">'sym</span> to slashes.</p></div> +<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> -<p><a id="min-operator-id-windows-path"></a> -<span class="reference-title">windows-path</span></p> +<p>Truncates <span class="kwd">num</span> to the decimal point.</p></div> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<a id="<code>net</code>-Module"></a> +<h3><code>net</code> Module<a href="#document-top" title="Go to top"></a></h3> -<p>Converts all slashes in <span class="kwd">'sym</span> to backslashes.</p></div> +<p><a id="min-operator-id-accept"></a> +<span class="reference-title">accept</span></p> -<a id="<code>logic</code>-Module"></a> -<h3><code>logic</code> Module<a href="#document-top" title="Go to top"></a></h3> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict:socket<sub>1</sub></span> <span class="kwd">dict:socket<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">dict:socket<sub>1</sub></span></span></p> -<p><a id="min-operator-id-&gt;"></a> -<span class="reference-title">></span></p> +<p>Makes <span class="kwd">dict:socket<sub>2</sub></span> (server) accept a connection from <span class="kwd">dict:socket<sub>1</sub></span> (client). Returns the client socket <span class="kwd">dict:socket<sub>1</sub></span> from which it will be possible to receive data from.</p></div> -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<p><a id="min-operator-id-close"></a> +<span class="reference-title">close</span></p> -<p>Returns <span class="kwd">true</span> if <span class="kwd">a<sub>1</sub></span> is greater than <span class="kwd">a<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict:socket</span> <strong>⇒</strong> ∅</span></p> -<div class="note"><p>Note</p> +<p>Closes a previously-opened socket.</p></div> -<p>Only comparisons among two numbers or two strings are supported.</p></div></div> +<p><a id="min-operator-id-connect"></a> +<span class="reference-title">connect</span></p> -<p><a id="min-operator-id-&gt;="></a> -<span class="reference-title">>=</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict:socket</span> <span class="kwd">str</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">dict:socket</span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<p>Connects socket <span class="kwd">dict:socket</span> to address <span class="kwd">str</span> and port <span class="kwd">int</span>.</p> -<p>Returns <span class="kwd">true</span> if <span class="kwd">a<sub>1</sub></span> is greater than or equal to <span class="kwd">a<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p> +<div class="sidebar"><p>Example</p> -<div class="note"><p>Note</p> +<p>The following code shows how to send a message to a server running on localhost:7777. The message is passed as the first argument to the program.</p> -<p>Only comparisons among two numbers or two strings are supported.</p></div></div> +<pre><code>{} net.socket "localhost" 7777 net.connect :cli -<p><a id="min-operator-id-&lt;"></a> -<span class="reference-title"><</span></p> +args 1 get :msg -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +"Sending message \"$1\" to localhost:7777..." (msg) => % puts! -<p>Returns <span class="kwd">true</span> if <span class="kwd">a<sub>1</sub></span> is smaller than <span class="kwd">a<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p> +cli "$1\n" (msg) => % net.send -<div class="note"><p>Note</p> +"Done." puts! -<p>Only comparisons among two numbers or two strings are supported.</p></div></div> +cli net.close +</code></pre></div></div> -<p><a id="min-operator-id-&lt;="></a> -<span class="reference-title"><=</span></p> +<p><a id="min-operator-id-listen"></a> +<span class="reference-title">listen</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <span class="kwd">dict:socket<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">dict:socket<sub>2</sub></span></span></p> -<p>Returns <span class="kwd">true</span> if <span class="kwd">a<sub>1</sub></span> is smaller than or equal to <span class="kwd">a<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p> +<p>Makes socket <span class="kwd">dict:socket<sub>1</sub></span> listen to the specified address and port. <span class="kwd">dict</span> can be empty or contain any of the following properties, used to specify the address and port to listen to respectively.</p> -<div class="note"><p>Note</p> +<dl> +<dt>address</dt> +<dd>The address to listen to (default: <strong>0.0.0.0</strong>).</dd> +<dt>port</dt> +<dd>The port to listen to (default: <strong>80</strong>).</dd> +</dl> -<p>Only comparisons among two numbers or two strings are supported.</p></div></div> +<div class="sidebar"><p>Example</p> -<p><a id="min-operator-id-=="></a> -<span class="reference-title">==</span></p> +<p>The following code shows how to create a simple server that listens on port 7777, prints data received from clients, and exits when it receives the string <code>exit</code>:</p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<pre><code>{} net.socket {"127.0.0.1" :address 7777 :port} net.listen :srv -<p>Returns <span class="kwd">true</span> if <span class="kwd">a<sub>1</sub></span> is equal to <span class="kwd">a<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p></div> +"Server listening on localhost:7777" puts! -<p><a id="min-operator-id-!="></a> -<span class="reference-title">!=</span></p> +{} net.socket :cli +"" :line +(line "exit" !=) +( + srv cli net.accept #cli + cli net.recv-line @line + "Received: $1" (line) => % puts! +) while -<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +"Exiting..." puts! -<p>Returns <span class="kwd">true</span> if <span class="kwd">a<sub>1</sub></span> is not equal to <span class="kwd">a<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p></div> +srv net.close +</code></pre></div></div> -<p><span class="reference-title">||</span></p> +<p><a id="min-operator-id-recv"></a> +<span class="reference-title">recv</span></p> -<div class="operator"><p><span class="kwd"> || <strong>⇒</strong> expect-any</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict:socket</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>See <a href="#min-operator-id-expect-any">expect-any</a>.</p></div> +<p>Waits to receive <span class="kwd">int</span> characters from <span class="kwd">dict:socket</span> and returns the resulting data <span class="kwd">str</span>.</p></div> -<p><span class="reference-title">&&</span></p> +<p><a id="min-operator-id-recv-line"></a> +<span class="reference-title">recv-line</span></p> -<div class="operator"><p><span class="kwd"> && <strong>⇒</strong> expect-all</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict:socket</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> -<p>See <a href="#min-operator-id-expect-all">expect-all</a>.</p></div> +<p>Waits to receive a line of data from <span class="kwd">dict:socket</span> and returns the resulting data <span class="kwd">str</span>. <code>""</code> is returned if <span class="kwd">dict:socket</span> is disconnected.</p> -<p><a id="min-operator-id-and"></a> -<span class="reference-title">and</span></p> +<div class="sidebar"><p>Example</p> -<div class="operator"><p><span class="kwd"> <span class="kwd">bool<sub>1</sub></span> <span class="kwd">bool<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool<sub>3</sub></span></span></p> +<p>The following code shows how to make a simple GET request to <a href="http://httpbin.org/uuid">http://httpbin.org/uuid</a> to receive a random UUID and display its response:</p> -<p>Returns <span class="kwd">true</span> if <span class="kwd">bool<sub>1</sub></span> is equal to <span class="kwd">bool<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p></div> +<pre><code>{} net.socket "httpbin.org" 80 net.connect :cli -<p><a id="min-operator-id-boolean?"></a> -<span class="reference-title">boolean?</span></p> +cli "GET /uuid HTTP/1.1\r\nHost: httpbin.org\r\n\r\n" net.send -<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +cli net.recv-line puts :line +(line "}" match not) +( + cli net.recv-line puts @line +) while +</code></pre></div></div> -<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is a boolean, <span class="kwd">false</span> otherwise.</p></div> +<p><a id="min-operator-id-send"></a> +<span class="reference-title">send</span></p> -<p><a id="min-operator-id-dictionary?"></a> -<span class="reference-title">dictionary?</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict:socket</span> <span class="kwd">str</span> <strong>⇒</strong> ∅</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<p>Sends <span class="kwd">str</span> to the connected socket <span class="kwd">dict:socket</span>.</p></div> -<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is a dictionary, <span class="kwd">false</span> otherwise.</p></div> +<p><a id="min-operator-id-socket"></a> +<span class="reference-title">socket</span></p> -<p><a id="min-operator-id-expect-all"></a> -<span class="reference-title">expect-all</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <strong>⇒</strong> <span class="kwd">dict:socket</span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<p>Opens a new socket.</p> -<p>Assuming that <span class="kwd">quot</span> is a quotation of quotations each evaluating to a boolean value, it pushes <span class="kwd">true</span> on the stack if they all evaluate to <span class="kwd">true</span>, <span class="kwd">false</span> otherwise.</p></div> +<p><span class="kwd">dict</span> can be empty or contain any of the following properties, used to specify the domain, type and protocol of the socket respectively.</p> -<p><a id="min-operator-id-expect-any"></a> -<span class="reference-title">expect-any</span></p> +<dl> +<dt>domain</dt> +<dd><p>The socket domain. It can be set to one of the following values:</p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<ul> +<li><strong>ipv4</strong> (default): Internet Protocol version 4.</li> +<li><strong>ipv6</strong>: Internet Protocol version 6.</li> +<li><strong>unix</strong>: local Unix file (not supported on Windows systems).</li> +</ul> +</dd> +<dt>type</dt> +<dd><p>The socket type. It can be set to one of the following values:</p> -<p>Assuming that <span class="kwd">quot</span> is a quotation of quotations each evaluating to a boolean value, it pushes <span class="kwd">true</span> on the stack if any evaluates to <span class="kwd">true</span>, <span class="kwd">false</span> otherwise.</p></div> +<ul> +<li><strong>stream</strong> (default): Reliable stream-oriented service or Stream Socket.</li> +<li><strong>dgram</strong>: Datagram service or Datagram Socket.</li> +<li><strong>raw</strong>: Raw protocols atop the network layer.</li> +<li><strong>seqpacket</strong>: Reliable sequenced packet service.</li> +</ul> +</dd> +<dt>protocol</dt> +<dd><p>The socket protocol. It can be set to one of the following values:</p> -<p><a id="min-operator-id-float?"></a> -<span class="reference-title">float?</span></p> +<ul> +<li><strong>tcp</strong> (default): Transmission Control Protocol.</li> +<li><strong>udp</strong>: User Datagram Protocol.</li> +<li><strong>ipv4</strong>: Internet Protocol version 4 (not supported on Windows systems).</li> +<li><strong>ipv6</strong>: Internet Protocol version 6 (not supported on Windows systems).</li> +<li><strong>raw</strong>: Raw IP Packets protocol (not supported on Windows systems).</li> +<li><strong>icmp</strong>: Internet Control Message Protocol (not supported on Windows systems).</li> +</ul> +</dd> +</dl></div> -<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<a id="<code>seq</code>-Module"></a> +<h3><code>seq</code> Module<a href="#document-top" title="Go to top"></a></h3> -<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is a float, <span class="kwd">false</span> otherwise.</p></div> +<p><a id="min-operator-id-all?"></a> +<span class="reference-title">all?</span></p> -<p><a id="min-operator-id-or"></a> -<span class="reference-title">or</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">bool<sub>1</sub></span> <span class="kwd">bool<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool<sub>3</sub></span></span></p> +<p>Applies predicate <span class="kwd">quot<sub>2</sub></span> to each element of <span class="kwd">quot<sub>1</sub></span> and returns <span class="kwd">true</span> if all elements of <span class="kwd">quot<sub>1</sub></span> satisfy predicate <span class="kwd">quot<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p></div> -<p>Returns <span class="kwd">true</span> if <span class="kwd">bool<sub>1</sub></span> or <span class="kwd">bool<sub>2</sub></span> is <span class="kwd">true</span>, <span class="kwd">false</span> otherwise.</p></div> +<p><a id="min-operator-id-any?"></a> +<span class="reference-title">any?</span></p> -<p><a id="min-operator-id-integer?"></a> -<span class="reference-title">integer?</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<p>Applies predicate <span class="kwd">quot<sub>2</sub></span> to each element of <span class="kwd">quot<sub>1</sub></span> and returns <span class="kwd">true</span> if at least one element of <span class="kwd">quot<sub>1</sub></span> satisfies predicate <span class="kwd">quot<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p></div> -<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is an integer, <span class="kwd">false</span> otherwise.</p></div> +<p><a id="min-operator-id-append"></a> +<span class="reference-title">append</span></p> -<p><a id="min-operator-id-not"></a> -<span class="reference-title">not</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <span class="kwd">quot</span> <strong>⇒</strong> (<span class="kwd">a<sub>*</sub></span> <span class="kwd">a</span>)</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">bool<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">bool<sub>2</sub></span></span></p> +<p>Returns a new quotation containing the contents of <span class="kwd">quot</span> with <span class="kwd">a</span> appended.</p></div> -<p>Negates <span class="kwd">bool<sub>1</sub></span>.</p></div> +<p><a id="min-operator-id-get"></a> +<span class="reference-title">get</span></p> -<p><a id="min-operator-id-null?"></a> -<span class="reference-title">null?</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">a</span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<p>Returns the <em>n<sup>th</sup></em> element of <span class="kwd">quot</span> (zero-based).</p></div> -<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is <span class="kwd">null</span>, <span class="kwd">false</span> otherwise.</p></div> +<p><a id="min-operator-id-concat"></a> +<span class="reference-title">concat</span></p> -<p><a id="min-operator-id-number?"></a> -<span class="reference-title">number?</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<p>Concatenates <span class="kwd">quot<sub>1</sub></span> with <span class="kwd">quot<sub>2</sub></span>.</p></div> -<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is a number, <span class="kwd">false</span> otherwise.</p></div> +<p><a id="min-operator-id-difference"></a> +<span class="reference-title">difference</span></p> -<p><a id="min-operator-id-quotation?"></a> -<span class="reference-title">quotation?</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<p>Calculates the difference <span class="kwd">quot<sub>3</sub></span> of <span class="kwd">quot<sub>1</sub></span> and <span class="kwd">quot<sub>2</sub></span>.</p> -<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is a quotation, <span class="kwd">false</span> otherwise.</p></div> +<div class="sidebar"><p>Example</p> -<p><a id="min-operator-id-quoted-symbol?"></a> -<span class="reference-title">quoted-symbol?</span></p> +<p>The following program leaves <code>(2)</code> on the stack:</p> + +<pre><code>(1 2 "test") ("test" "a" true 1) seq.difference +</code></pre></div></div> + +<p><a id="min-operator-id-drop"></a> +<span class="reference-title">drop</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> + +<p>Returns a quotation <span class="kwd">quot<sub>2</sub></span> containing the remaining elements after the first <em>n</em> values of the input quotation <span class="kwd">quot<sub>1</sub></span>, or an empty quotation if <span class="kwd">int</span> is greater than the length of <span class="kwd">quot<sub>1</sub></span>.</p></div> + +<p><a id="min-operator-id-filter"></a> +<span class="reference-title">filter</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> -<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is a quoted symbol, <span class="kwd">false</span> otherwise.</p></div> +<p>Returns a new quotation <span class="kwd">quot<sub>3</sub></span> containing all elements of <span class="kwd">quot<sub>1</sub></span> that satisfy predicate <span class="kwd">quot<sub>2</sub></span>.</p> -<p><a id="min-operator-id-string?"></a> -<span class="reference-title">string?</span></p> +<div class="sidebar"><p>Example</p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<p>The following program leaves <code>(2 6 8 12)</code> on the stack:</p> -<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is a string, <span class="kwd">false</span> otherwise.</p></div> +<pre><code>(1 37 34 2 6 8 12 21) +(stackdup 20 < stack.swap even? and) seq.filter +</code></pre></div></div> -<p><a id="min-operator-id-stringlike?"></a> -<span class="reference-title">stringlike?</span></p> +<p><a id="min-operator-id-find"></a> +<span class="reference-title">find</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int</span></span></p> + +<p>Returns the index of the first element within <span class="kwd">quot<sub>1</sub></span> that satisfies predicate <span class="kwd">quot<sub>2</sub></span>, or -1 if no element satisfies it.</p> + +<div class="sidebar"><p>Example</p> + +<p>The following program leaves <code>3</code> on the stack:</p> + +<pre><code>(1 2 4 8 16) +(5 >) seq.find +</code></pre></div></div> + +<p><a id="min-operator-id-first"></a> +<span class="reference-title">first</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">a</span></span></p> + +<p>Returns the first element of <span class="kwd">quot</span>.</p></div> + +<p><a id="min-operator-id-flatten"></a> +<span class="reference-title">flatten</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> + +<p>Flattens all quotations within <span class="kwd">quot<sub>1</sub></span> and returns the resulting sequence <span class="kwd">quot<sub>2</sub></span>.</p> + +<div class="sidebar"><p>Example</p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<p>The following program leaves <code>(1 2 3 4 5 6 7 8)</code> on the stack:</p> -<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is a string or a quoted symbol, <span class="kwd">false</span> otherwise.</p></div> +<pre><code>(1 (2 3 4) 5 (6 7) 8) +seq.flatten +</code></pre></div></div> -<p><a id="min-operator-id-type?"></a> -<span class="reference-title">type?</span></p> +<p><a id="min-operator-id-harvest"></a> +<span class="reference-title">harvest</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> -<p>Returns <span class="kwd">true</span> if the data type of <span class="kwd">a</span> satisfies the specified type expression <span class="kwd">'sym</span>, <span class="kwd">false</span> otherwise.</p></div> +<p>Creates a new quotation <span class="kwd">quot<sub>2</sub></span> containing all elements of <span class="kwd">quot<sub>1</sub></span> except for empty quotations.</p> -<p><a id="min-operator-id-xor"></a> -<span class="reference-title">xor</span></p> +<div class="sidebar"><p>Example</p> -<div class="operator"><p><span class="kwd"> <span class="kwd">bool<sub>1</sub></span> <span class="kwd">bool<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool<sub>3</sub></span></span></p> +<p>The following program leaves <code>(1 2 3)</code> on the stack:</p> -<p>Returns <span class="kwd">true</span> if <span class="kwd">bool<sub>1</sub></span> and <span class="kwd">bool<sub>2</sub></span> are different, <span class="kwd">false</span> otherwise.</p></div> +<pre><code>(1 () () () 2 () 3) +seq.harvest +</code></pre></div></div> -<a id="<code>str</code>-Module"></a> -<h3><code>str</code> Module<a href="#document-top" title="Go to top"></a></h3> +<p><a id="min-operator-id-in?"></a> +<span class="reference-title">in?</span></p> -<p><span class="reference-title">%</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <span class="kwd">a</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> -<div class="operator"><p><span class="kwd"> % <strong>⇒</strong> interpolate</span></p> +<p>Returns <span class="kwd">true</span> if <span class="kwd">a</span> is contained in <span class="kwd">quot</span>, <span class="kwd">false</span> otherwise.</p></div> -<p>See <a href="#min-operator-id-interpolate">interpolate</a>.</p></div> +<p><a id="min-operator-id-insert"></a> +<span class="reference-title">insert</span></p> -<p><span class="reference-title">=%</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">a</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> -<div class="operator"><p><span class="kwd"> =% <strong>⇒</strong> apply-interpolate</span></p> +<p>Inserts <span class="kwd">a</span> as the value of the <em>n<sup>th</sup></em> element <span class="kwd">quot<sub>1</sub></span> (zero-based), and returns the modified copy of the quotation <span class="kwd">quot<sub>2</sub></span>.</p></div> -<p>See <a href="#min-operator-id-apply-interpolate">apply-interpolate</a>.</p></div> +<p><a id="min-operator-id-intersection"></a> +<span class="reference-title">intersection</span></p> -<p><a id="min-operator-id-apply-interpolate"></a> -<span class="reference-title">apply-interpolate</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">str</span> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<p>Calculates the intersection <span class="kwd">quot<sub>3</sub></span> of <span class="kwd">quot<sub>1</sub></span> and <span class="kwd">quot<sub>2</sub></span>.</p> -<p>The same as pushing <code>apply</code> and then <code>interpolate</code> on the stack.</p></div> +<div class="sidebar"><p>Example</p> -<p><a id="min-operator-id-capitalize"></a> -<span class="reference-title">capitalize</span></p> +<p>The following program leaves <code>(1 "test")</code> on the stack:</p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<pre><code>(1 2 "test") ("test" "a" true 1) seq.intersection +</code></pre></div></div> -<p>Returns a copy of <span class="kwd">'sym</span> with the first character capitalized.</p></div> +<p><a id="min-operator-id-last"></a> +<span class="reference-title">last</span></p> -<p><a id="min-operator-id-chr"></a> -<span class="reference-title">chr</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">a</span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<p>Returns the last element of <span class="kwd">quot</span>.</p></div> -<p>Returns the single character <span class="kwd">str</span> obtained by interpreting <span class="kwd">int</span> as an ASCII code.</p></div> +<p><a id="min-operator-id-map"></a> +<span class="reference-title">map</span></p> -<p><a id="min-operator-id-escape"></a> -<span class="reference-title">escape</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<p>Returns a new quotation <span class="kwd">quot<sub>3</sub></span> obtained by applying <span class="kwd">quot<sub>2</sub></span> to each element of <span class="kwd">quot<sub>1</sub></span>.</p></div> -<p>Returns a copy of <span class="kwd">'sym</span> with quotes and backslashes escaped with a backslash.</p></div> +<p><a id="min-operator-id-map-reduce"></a> +<span class="reference-title">map-reduce</span></p> -<p><a id="min-operator-id-from-bin"></a> -<span class="reference-title">from-bin</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <span class="kwd">quot<sub>3</sub></span> <strong>⇒</strong> <span class="kwd">int</span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> +<p>Applies <span class="kwd">quot<sub>2</sub></span> (map) to each element of <span class="kwd">quot<sub>1</sub></span> and then applies <span class="kwd">quot<sub>3</sub></span> (reduce) to each successive element of <span class="kwd">quot<sub>1</sub></span>. <span class="kwd">quot<sub>1</sub></span> must have at least one element.</p> -<p>Parses <span class="kwd">'sym</span> as a binary number.</p></div> +<div class="sidebar"><p>Example</p> -<p><a id="min-operator-id-from-dec"></a> -<span class="reference-title">from-dec</span></p> +<p>The following program leaves <code>35</code> on the stack:</p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> +<pre><code>(1 3 5) +(stack.dup *) (+) seq.map-reduce +</code></pre></div></div> -<p>Parses <span class="kwd">'sym</span> as a decimal number.</p></div> +<p><a id="min-operator-id-partition"></a> +<span class="reference-title">partition</span></p> -<p><a id="min-operator-id-from-hex"></a> -<span class="reference-title">from-hex</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span> <span class="kwd">quot<sub>4</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> +<p>Partitions <span class="kwd">quot<sub>1</sub></span> into two quotations: <span class="kwd">quot<sub>3</sub></span> contains all elements of <span class="kwd">quot<sub>1</sub></span> that satisfy predicate <span class="kwd">quot<sub>2</sub></span>, <span class="kwd">quot<sub>4</sub></span> all the others.</p> -<p>Parses <span class="kwd">'sym</span> as a hexadecimal number.</p></div> +<div class="sidebar"><p>Example</p> -<p><a id="min-operator-id-from-oct"></a> -<span class="reference-title">from-oct</span></p> +<p>The following program leaves <code>(1 3 5) (2 4 6)</code> on the stack:</p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> +<pre><code>(1 2 3 4 5 6) +(odd?) seq.partition +</code></pre></div></div> -<p>Parses <span class="kwd">'sym</span> as a octal number.</p></div> +<p><a id="min-operator-id-one?"></a> +<span class="reference-title">one?</span></p> -<p><a id="min-operator-id-from-semver"></a> -<span class="reference-title">from-semver</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">str</span> <strong>⇒</strong> <span class="kwd">dict</span></span></p> +<p>Applies predicate <span class="kwd">quot<sub>2</sub></span> to each element of <span class="kwd">quot<sub>1</sub></span> and returns <span class="kwd">true</span> if only one element of <span class="kwd">quot<sub>1</sub></span> satisfies predicate <span class="kwd">quot<sub>2</sub></span>, <span class="kwd">false</span> otherwise.</p></div> -<p>Given a basic <a href="https://semver.org">SemVer</a>-compliant string (with no additional labels) <span class="kwd">str</span>, -it pushes a dictionary <span class="kwd">dict</span> on the stack containing a <strong>major</strong>, <strong>minor</strong>, and <strong>patch</strong> key/value pairs.</p></div> +<p><a id="min-operator-id-prepend"></a> +<span class="reference-title">prepend</span></p> -<p><a id="min-operator-id-indent"></a> -<span class="reference-title">indent</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <span class="kwd">quot</span> <strong>⇒</strong> (<span class="kwd">a</span> <span class="kwd">a<sub>*</sub></span>)</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<p>Returns a new quotation containing the contents of <span class="kwd">quot</span> with <span class="kwd">a</span> prepended.</p></div> -<p>Returns <span class="kwd">str</span> containing <span class="kwd">'sym</span> indented with <span class="kwd">int</span> spaces.</p></div> +<p><a id="min-operator-id-quote-map"></a> +<span class="reference-title">quote-map</span></p> -<p><a id="min-operator-id-indexof"></a> -<span class="reference-title">indexof</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <span class="kwd">str<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int</span></span></p> +<p>Returns a new quotation <span class="kwd">quot<sub>2</sub></span> obtained by quoting each element of <span class="kwd">quot<sub>1</sub></span>.</p></div> -<p>If <span class="kwd">str<sub>2</sub></span> is contained in <span class="kwd">str<sub>1</sub></span>, returns the index of the first match or -1 if no match is found.</p></div> +<p><a id="min-operator-id-raw-get"></a> +<span class="reference-title">raw-get</span></p> -<p><a id="min-operator-id-interpolate"></a> -<span class="reference-title">interpolate</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">dict:rawval</span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">str</span> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<p>Returns the <em>n<sup>th</sup></em> element of <span class="kwd">quot</span> (zero-based) wrapped in a <span class="kwd">dict:rawval</span>.</p></div> -<p>Substitutes the placeholders included in <span class="kwd">str</span> with the values in <span class="kwd">quot</span>.</p> +<p><a id="min-operator-id-reduce"></a> +<span class="reference-title">reduce</span></p> -<div class="note"><p>Notes</p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">a<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>2</sub></span></span></p> -<ul> -<li>If <span class="kwd">quot</span> contains symbols or quotations, they are not interpreted. To do so, call <code>apply</code> before interpolating or use <code>apply-interpolate</code> instead.</li> -<li>You can use the <code>$#</code> placeholder to indicate the next placeholder that has not been already referenced in the string.</li> -<li>You can use named placeholders like <code>$pwd</code>, but in this case <span class="kwd">quot</span> must contain a quotation containing both the placeholder names (odd items) and the values (even items).</li> -</ul> -</div> +<p>Combines each successive element of <span class="kwd">quot<sub>1</sub></span> using <span class="kwd">quot<sub>2</sub></span>. On the first iteration, the first two inputs processed by <span class="kwd">quot<sub>2</sub></span> are <span class="kwd">a<sub>1</sub></span> and the first element of <span class="kwd">quot<sub>1</sub></span>.</p> <div class="sidebar"><p>Example</p> -<p>The following code (executed in a directory called ‘/Users/h3rald/Development/min’ containing 19 files):</p> +<p>The following program leaves <code>120</code> on the stack:</p> + +<pre><code>(1 2 3 4 5) +1 (*) seq.reduce +</code></pre></div></div> + +<p><a id="min-operator-id-reject"></a> +<span class="reference-title">reject</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> + +<p>Returns a new quotatios <span class="kwd">quot<sub>3</sub></span> including all elements of <span class="kwd">quot<sub>1</sub></span> that do not satisfy predicate <span class="kwd">quot<sub>2</sub></span> (i.e. the opposite of <code>filter</code>)</p></div> + +<p><a id="min-operator-id-remove"></a> +<span class="reference-title">remove</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> + +<p>Returns the <em>n<sup>th</sup></em> element of <span class="kwd">quot<sub>1</sub></span> (zero-based), and returns the modified copy of the quotation <span class="kwd">quot<sub>2</sub></span>.</p></div> + +<p><a id="min-operator-id-rest"></a> +<span class="reference-title">rest</span></p> -<p><code>"Directory '$1' includes $2 files." (. (. ls 'file? filter size)) apply interpolate</code></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> -<p>produces:</p> +<p>Returns a new quotation <span class="kwd">quot<sub>2</sub></span> containing all elements of <span class="kwd">quot<sub>1</sub></span> quotation except for the first.</p></div> -<p><code>"Directory '/Users/h3rald/Development/min' includes 19 files."</code></p></div></div> +<p><a id="min-operator-id-reverse"></a> +<span class="reference-title">reverse</span></p> -<p><a id="min-operator-id-join"></a> -<span class="reference-title">join</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<p>Returns a new quotation <span class="kwd">quot<sub>2</sub></span> containing all elements of <span class="kwd">quot<sub>1</sub></span> in reverse order.</p></div> -<p>Joins the elements of <span class="kwd">quot</span> using separator <span class="kwd">'sym</span>, producing <span class="kwd">str</span>.</p></div> +<p><a id="min-operator-id-set"></a> +<span class="reference-title">set</span></p> -<p><a id="min-operator-id-length"></a> -<span class="reference-title">length</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">a</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> +<p>Sets the value of the <em>n<sup>th</sup></em> element <span class="kwd">quot<sub>1</sub></span> (zero-based) to <span class="kwd">a</span>, and returns the modified copy of the quotation <span class="kwd">quot<sub>2</sub></span>.</p></div> -<p>Returns the length of <span class="kwd">'sym</span>.</p></div> +<p><a id="min-operator-id-set-sym"></a> +<span class="reference-title">set-sym</span></p> -<p><a id="min-operator-id-lowercase"></a> -<span class="reference-title">lowercase</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">'sym</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<p>Sets the value of the <em>n<sup>th</sup></em> element <span class="kwd">quot<sub>1</sub></span> (zero-based) to <span class="kwd">'sym</span> (treating it as a symbol), and returns the modified copy of the quotation <span class="kwd">quot<sub>2</sub></span>.</p></div> -<p>Returns a copy of <span class="kwd">'sym</span> converted to lowercase.</p></div> +<p><a id="min-operator-id-shorten"></a> +<span class="reference-title">shorten</span></p> -<p><a id="min-operator-id-match?"></a> -<span class="reference-title">match?</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <span class="kwd">str<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<p>Returns a quotation <span class="kwd">quot<sub>2</sub></span> containing the first <em>n</em> values of the input quotation <span class="kwd">quot<sub>1</sub></span>.</p></div> -<p>Returns <span class="kwd">true</span> if <span class="kwd">str<sub>2</sub></span> matches <span class="kwd">str<sub>1</sub></span>, <span class="kwd">false</span> otherwise.</p> +<p><a id="min-operator-id-size"></a> +<span class="reference-title">size</span></p> -<div class="tip"><p>Tip</p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> -<p><span class="kwd">str<sub>2</sub></span> is a <a href="https://www.pcre.org/">Perl Compatible Regular Expression</a>.</p></div></div> +<p>Returns the length of <span class="kwd">quot</span>.</p></div> -<p><a id="min-operator-id-ord"></a> -<span class="reference-title">ord</span></p> +<p><a id="min-operator-id-slice"></a> +<span class="reference-title">slice</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">str</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> -<p>Returns the ASCII code <span class="kwd">int</span> corresponding to the single character <span class="kwd">str</span>.</p></div> +<p>Creates a new quotation <span class="kwd">quot<sub>2</sub></span> obtaining by selecting all elements of <span class="kwd">quot<sub>1</sub></span> between indexes <span class="kwd">int<sub>1</sub></span> and <span class="kwd">int<sub>2</sub></span>.</p> -<p><a id="min-operator-id-parse-url"></a> -<span class="reference-title">parse-url</span></p> +<div class="sidebar"><p>Example</p> -<div class="operator"><p><span class="kwd"> <span class="kwd">str</span> <strong>⇒</strong> <span class="kwd">dict:url</span></span></p> +<p>The following program leaves <code>(3 4 5)</code> on the stack:</p> + +<pre><code>(1 2 3 4 5 6) +2 4 seq.slice +</code></pre></div></div> + +<p><a id="min-operator-id-sort"></a> +<span class="reference-title">sort</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> + +<p>Sorts all elements of <span class="kwd">quot<sub>1</sub></span> according to predicate <span class="kwd">quot<sub>2</sub></span>.</p> + +<div class="sidebar"><p>Example</p> + +<p>The following program leaves <code>(1 3 5 7 9 13 16)</code> on the stack:</p> -<p>Parses the url <span class="kwd">str</span> into its components and stores them into <span class="kwd">dict:url</span>.</p></div> +<pre><code>(1 9 5 13 16 3 7) '> seq.sort +</code></pre></div></div> -<p><a id="min-operator-id-prefix"></a> -<span class="reference-title">prefix</span></p> +<p><a id="min-operator-id-symmetric-difference"></a> +<span class="reference-title">symmetric-difference</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym<sub>1</sub></span> <span class="kwd">'sym<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<p>Calculates the symmetric difference <span class="kwd">quot<sub>3</sub></span> of <span class="kwd">quot<sub>1</sub></span> and <span class="kwd">quot<sub>2</sub></span>.</p> -<p>Prepends <span class="kwd">'sym<sub>2</sub></span> to <span class="kwd">'sym<sub>1</sub></span>.</p></div> +<div class="sidebar"><p>Example</p> -<p><a id="min-operator-id-repeat"></a> -<span class="reference-title">repeat</span></p> +<p>The following program leaves <code>(true "a" 2)</code> on the stack:</p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<pre><code>(1 2 "test") ("test" "a" true 1) seq.symmetric-difference +</code></pre></div></div> -<p>Returns <span class="kwd">str</span> containing <span class="kwd">'sym</span> repeated <span class="kwd">int</span> times.</p></div> +<p><a id="min-operator-id-take"></a> +<span class="reference-title">take</span></p> -<p><a id="min-operator-id-replace"></a> -<span class="reference-title">replace</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <span class="kwd">str<sub>2</sub></span> <span class="kwd">str<sub>3</sub></span> <strong>⇒</strong> <span class="kwd">str<sub>4</sub></span></span></p> +<p>Returns a quotation <span class="kwd">quot<sub>2</sub></span> containing the first <em>n</em> values of the input quotation <span class="kwd">quot<sub>1</sub></span>, or <span class="kwd">quot<sub>1</sub></span> itself if <span class="kwd">int</span> is greater than the length of <span class="kwd">quot<sub>1</sub></span>.</p></div> -<p>Returns a copy of <span class="kwd">str<sub>1</sub></span> containing all occurrences of <span class="kwd">str<sub>2</sub></span> replaced by <span class="kwd">str<sub>3</sub></span></p> +<p><a id="min-operator-id-union"></a> +<span class="reference-title">union</span></p> -<div class="tip"><p>Tip</p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>3</sub></span></span></p> -<p><span class="kwd">str<sub>2</sub></span> is a <a href="https://www.pcre.org/">Perl Compatible Regular Expression</a>.</p></div> +<p>Calculates the union <span class="kwd">quot<sub>3</sub></span> of <span class="kwd">quot<sub>1</sub></span> and <span class="kwd">quot<sub>2</sub></span>.</p> <div class="sidebar"><p>Example</p> -<p>The following:</p> +<p>The following program leaves <code>(true 1 "test" "a" 2)</code> on the stack:</p> -<p><code>"This is a stupid test. Is it really a stupid test?" " s[a-z]+" " simple" replace</code></p> +<pre><code>(1 2 "test") ("test" "a" true 1) seq.union +</code></pre></div></div> -<p>produces:</p> +<a id="<code>stack</code>-Module"></a> +<h3><code>stack</code> Module<a href="#document-top" title="Go to top"></a></h3> -<p><code>"This is a simple test. Is it really a simple test?"</code></p></div></div> +<p><a id="min-operator-id-clear"></a> +<span class="reference-title">clear</span></p> -<p><a id="min-operator-id-replace-apply"></a> -<span class="reference-title">replace-apply</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> ∅</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <span class="kwd">str<sub>2</sub></span> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">str<sub>3</sub></span></span></p> +<p>Empties the stack.</p></div> -<p>Returns a copy of <span class="kwd">str<sub>1</sub></span> containing all occurrences of <span class="kwd">str<sub>2</sub></span> replaced by applying <span class="kwd">quot</span> to each quotation corresponding to each match.</p> +<p><a id="min-operator-id-cleave"></a> +<span class="reference-title">cleave</span></p> -<div class="tip"><p>Tip</p> +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> (<span class="kwd">quot</span><span class="kwd"><sub>*</sub></span>) <strong>⇒</strong> <span class="kwd">a<sub>*</sub></span></span></p> -<p><span class="kwd">str<sub>2</sub></span> is a <a href="https://www.pcre.org/">Perl Compatible Regular Expression</a>.</p></div> +<p>Applies each quotation contained in the first element to the second element <span class="kwd">a<sub>1</sub></span>.</p> <div class="sidebar"><p>Example</p> -<p>The following:</p> +<p>The following program leaves 2 on the stack:</p> -<p><code>":1::2::3::4:" ":(\d):" (1 get :d "-$#-" (d) =%) replace-apply</code></p> +<p><code>(1 2 3) ((sum) (size)) stack.cleave /</code></p></div></div> -<p>produces:</p> +<p><a id="min-operator-id-cons"></a> +<span class="reference-title">cons</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> (<span class="kwd">a<sub>*</sub></span>) <strong>⇒</strong> (<span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>*</sub></span>)</span></p> + +<p>Prepends <span class="kwd">a<sub>1</sub></span> to the quotation on top of the stack.</p></div> + +<p><a id="min-operator-id-dip"></a> +<span class="reference-title">dip</span></p> -<p><code>"-1--2--3--4-"</code></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> (<span class="kwd">a<sub>2</sub></span>) <strong>⇒</strong> <span class="kwd">a<sub>*</sub></span> <span class="kwd">a<sub>1</sub></span></span></p> -<p>Note that for each match the following quotations (each containing the full match and the captured matches) are produced as input for the replace quotation: <code>("-1-" "1") ("-2-" "2") ("-3-" "3") ("-4-" "4")</code></p></div></div> +<p>Removes the first and second element from the stack, dequotes the first element, and restores the second element.</p></div> -<p><a id="min-operator-id-search"></a> -<span class="reference-title">search</span></p> +<p><a id="min-operator-id-dup"></a> +<span class="reference-title">dup</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <span class="kwd">str<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>1</sub></span></span></p> -<p>Returns a quotation containing the first occurrence of <span class="kwd">str<sub>2</sub></span> within <span class="kwd">str<sub>1</sub></span>. Note that:</p> +<p>Duplicates the first element on the stack.</p></div> -<ul> -<li>The first element of <span class="kwd">quot</span> is the matching substring.</li> -<li>Other elements (if any) contain captured substrings.</li> -<li>If no matches are found, the quotation contains empty strings.</li> -</ul> +<p><a id="min-operator-id-get"></a> +<span class="reference-title">get</span></p> +<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> (<span class="kwd">a<sub>*</sub></span>)</span></p> -<div class="tip"><p>Tip</p> +<p>Puts a quotation containing the contents of the stack on the stack.</p></div> -<p><span class="kwd">str<sub>2</sub></span> is a <a href="https://www.pcre.org/">Perl Compatible Regular Expression</a>.</p></div> +<p><a id="min-operator-id-id"></a> +<span class="reference-title">id</span></p> + +<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> ∅</span></p> + +<p>Does nothing.</p></div> + +<p><a id="min-operator-id-keep"></a> +<span class="reference-title">keep</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">a<sub>*</sub></span> <span class="kwd">a<sub>1</sub></span></span></p> + +<p>Removes the first element from the stack, dequotes it, and restores the second element.</p> <div class="sidebar"><p>Example</p> -<p>The following:</p> +<p>The following program leaves <code>5 3</code> on the stack:</p> + +<p><code>2 3 '+ stack.keep</code></p></div></div> + +<p><a id="min-operator-id-nip"></a> +<span class="reference-title">nip</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>2</sub></span></span></p> + +<p>Removes the second element from the stack.</p></div> + +<p><a id="min-operator-id-over"></a> +<span class="reference-title">over</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <span class="kwd">a<sub>1</sub></span></span></p> + +<p>Pushes a copy of the second element on top of the stack.</p></div> + +<p><a id="min-operator-id-pick"></a> +<span class="reference-title">pick</span></p> -<p><code>"192.168.1.1, 127.0.0.1" "[0-9]+\.[0-9]+\.([0-9]+)\.([0-9]+)" search</code></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <span class="kwd">a<sub>3</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <span class="kwd">a<sub>3</sub></span> <span class="kwd">a<sub>1</sub></span></span></p> -<p>produces: <code>("192.168.1.1", "1", "1")</code></p></div></div> +<p>Pushes a copy of the third element on top of the stack.</p></div> -<p><a id="min-operator-id-search-all"></a> -<span class="reference-title">search-all</span></p> +<p><a id="min-operator-id-pop"></a> +<span class="reference-title">pop</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a</span> <strong>⇒</strong> ∅</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <span class="kwd">str<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot</span></span></p> +<p>Removes the first element from the stack.</p></div> + +<p><a id="min-operator-id-rolldown"></a> +<span class="reference-title">rolldown</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <span class="kwd">a<sub>3</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>2</sub></span> <span class="kwd">a<sub>3</sub></span> <span class="kwd">a<sub>1</sub></span></span></p> + +<p>Moves the third element in first position, the second in third position and the the first in second position.</p></div> + +<p><a id="min-operator-id-rollup"></a> +<span class="reference-title">rollup</span></p> + +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <span class="kwd">a<sub>3</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>3</sub></span> <span class="kwd">a<sub>2</sub></span> <span class="kwd">a<sub>1</sub></span></span></p> + +<p>Moves the third and second element into second and third position and moves the first element into third position.</p></div> -<p>Returns a quotation of quotations (like the one returned by the search operator) containing all occurrences of <span class="kwd">str<sub>2</sub></span> within <span class="kwd">str<sub>1</sub></span>.</p></div> +<p><a id="min-operator-id-set"></a> +<span class="reference-title">set</span></p> -<p><a id="min-operator-id-semver-inc-major"></a> -<span class="reference-title">semver-inc-major</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">a<sub>*</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">str<sub>2</sub></span></span></p> +<p>Substitute the existing stack with the contents of <span class="kwd">quot</span>.</p></div> -<p>Increments the major digit of the <a href="https://semver.org">SemVer</a>-compliant string (with no additional labels) <span class="kwd">str<sub>1</sub></span>.</p></div> +<p><a id="min-operator-id-sip"></a> +<span class="reference-title">sip</span></p> -<p><a id="min-operator-id-semver-inc-minor"></a> -<span class="reference-title">semver-inc-minor</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>1</sub></span> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>*</sub></span> <span class="kwd">quot<sub>1</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">str<sub>2</sub></span></span></p> +<p>Saves the <span class="kwd">quot<sub>1</sub></span>, dequotes <span class="kwd">quot<sub>2</sub></span>, and restores <span class="kwd">quot<sub>1</sub></span>.</p></div> -<p>Increments the minor digit of the <a href="https://semver.org">SemVer</a>-compliant string (with no additional labels) <span class="kwd">str<sub>1</sub></span>.</p></div> +<p><a id="min-operator-id-spread"></a> +<span class="reference-title">spread</span></p> -<p><a id="min-operator-id-semver-inc-patch"></a> -<span class="reference-title">semver-inc-patch</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>*</sub></span> (<span class="kwd">quot</span><span class="kwd"><sub>*</sub></span>) <strong>⇒</strong> <span class="kwd">a<sub>*</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">str<sub>2</sub></span></span></p> +<p>Applies each quotation contained in the first element to each subsequent corresponding element.</p> -<p>Increments the patch digit of the <a href="https://semver.org">SemVer</a>-compliant string (with no additional labels) <span class="kwd">str<sub>1</sub></span>.</p></div> +<div class="sidebar"><p>Example</p> -<p><a id="min-operator-id-semver?"></a> -<span class="reference-title">semver?</span></p> +<p>The following program leaves <code>(1 4)</code> on the stack:</p> -<div class="operator"><p><span class="kwd"> <span class="kwd">str</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> +<p><code>(1 2) (3 4) ((0 get) (1 get)) stack.spread</code></p></div></div> -<p>Checks whether <span class="kwd">str</span> is a <a href="https://semver.org">SemVer</a>-compliant version or not.</p></div> +<p><a id="min-operator-id-swap"></a> +<span class="reference-title">swap</span></p> -<p><a id="min-operator-id-split"></a> -<span class="reference-title">split</span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">a<sub>2</sub></span> <span class="kwd">a<sub>1</sub></span></span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym<sub>1</sub></span> <span class="kwd">'sym<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot</span></span></p> +<p>Swaps the first two elements on the stack.</p></div> -<p>Splits <span class="kwd">'sym<sub>1</sub></span> using separator <span class="kwd">'sym<sub>2</sub></span> (a <a href="https://www.pcre.org/">Perl Compatible Regular Expression</a>) and returns the resulting strings within the quotation <span class="kwd">quot</span>.</p></div> +<p><a id="min-operator-id-swons"></a> +<span class="reference-title">swons</span></p> -<p><a id="min-operator-id-strip"></a> -<span class="reference-title">strip</span></p> +<div class="operator"><p><span class="kwd"> (<span class="kwd">a<sub>*</sub></span>) <span class="kwd">a<sub>1</sub></span> <strong>⇒</strong> (<span class="kwd">a<sub>1</sub></span> <span class="kwd">a<sub>*</sub></span>)</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<p>Prepends <span class="kwd">a<sub>1</sub></span> to the quotation that follows it.</p></div> -<p>Returns <span class="kwd">str</span>, which is set to <span class="kwd">'sym</span> with leading and trailing spaces removed.</p></div> +<a id="<code>store</code>-Module"></a> +<h3><code>store</code> Module<a href="#document-top" title="Go to top"></a></h3> -<p><a id="min-operator-id-substr"></a> -<span class="reference-title">substr</span></p> +<p><a id="min-operator-id-delete"></a> +<span class="reference-title">delete</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">str<sub>2</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict:datastore</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict:datastore</span></span></p> -<p>Returns a substring <span class="kwd">str<sub>2</sub></span> obtained by retrieving <span class="kwd">int<sub>2</sub></span> characters starting from index <span class="kwd">int<sub>1</sub></span> within <span class="kwd">str<sub>1</sub></span>.</p></div> +<p>Removes an item from the datastore <span class="kwd">dict:datastore</span>. The item is uniquely identified by <span class="kwd">'sym</span>, which contains the collection containing the item and the item id, separated by a forward slash (/). Puts the reference to the modified datastore back on tbe stack.</p></div> -<p><a id="min-operator-id-suffix"></a> -<span class="reference-title">suffix</span></p> +<p><a id="min-operator-id-get"></a> +<span class="reference-title">get</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym<sub>1</sub></span> <span class="kwd">'sym<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict:datastore</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict</span></span></p> -<p>Appends <span class="kwd">'sym<sub>2</sub></span> to <span class="kwd">'sym<sub>1</sub></span>.</p></div> +<p>Retrieves item <span class="kwd">dict</span> from datastore <span class="kwd">dict:datastore</span>. <span class="kwd">dict</span> is retrieved by specifying <span class="kwd">'sym</span>, which contains the collection containing the item and the item id, separated by a forward slash (/).</p></div> -<p><a id="min-operator-id-titleize"></a> -<span class="reference-title">titleize</span></p> +<p><a id="min-operator-id-init"></a> +<span class="reference-title">init</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict:datastore</span></span></p> -<p>Returns a copy of <span class="kwd">'sym</span> in which the first character of each word is capitalized.</p></div> +<p>Initializes a bew datastore by creating the <span class="kwd">'sym</span> JSON file. Puts the datastore instance on the stack.</p></div> -<p><a id="min-operator-id-to-bin"></a> -<span class="reference-title">to-bin</span></p> +<p><a id="min-operator-id-post"></a> +<span class="reference-title">post</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict:datastore</span> <span class="kwd">'sym</span> <span class="kwd">dict</span> <strong>⇒</strong> <span class="kwd">dict:datastore</span></span></p> -<p>Converts <span class="kwd">int</span> to its binary representation.</p></div> +<p>Adds the dictionary <span class="kwd">dict</span> to the datastore <span class="kwd">dict:datastore</span> inside collection <span class="kwd">'sym</span>, generating and adding a unique <strong>id</strong> field to <span class="kwd">dict</span>. If the collection <span class="kwd">'sym</span> does not exist it is created. Puts the reference to the modified datastore back on tbe stack.</p></div> -<p><a id="min-operator-id-to-dec"></a> -<span class="reference-title">to-dec</span></p> +<p><a id="min-operator-id-put"></a> +<span class="reference-title">put</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict:datastore</span> <span class="kwd">'sym</span> <span class="kwd">dict</span> <strong>⇒</strong> <span class="kwd">dict:datastore</span></span></p> -<p>Converts <span class="kwd">int</span> to its decimal representation.</p></div> +<p>Adds the dictionary <span class="kwd">dict</span> to the datastore <span class="kwd">dict:datastore</span>. <span class="kwd">'sym</span> contains the collection where <span class="kwd">dict</span> will be placed and the id of <span class="kwd">dict</span>, separated by a forward slash (/). If the collection <span class="kwd">'sym</span> does not exist it is created. Puts the reference to the modified datastore back on tbe stack.</p></div> -<p><a id="min-operator-id-to-hex"></a> -<span class="reference-title">to-hex</span></p> +<p><a id="min-operator-id-query"></a> +<span class="reference-title">query</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict:datastore</span> <span class="kwd">'sym</span> <span class="kwd">quot</span> <strong>⇒</strong> (<span class="kwd">dict<sub>*</sub></span>)</span></p> -<p>Converts <span class="kwd">int</span> to its hexadecimal representation.</p></div> +<p>Retrieves a quotation of dictionaries from the collection <span class="kwd">'sym</span> of datastore <span class="kwd">dict:datastore</span> obtained by applying <span class="kwd">quot</span> as a filter to each item of the collection, picking only the elements that match the filter.</p> -<p><a id="min-operator-id-to-oct"></a> -<span class="reference-title">to-oct</span></p> +<div class="sidebar"><p>Example</p> -<div class="operator"><p><span class="kwd"> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<p>Assuming that <strong>ds</strong> is a datastore, the following program retrieves all elements of teh collection <strong>posts</strong> whose author field is set to “h3rald”:</p> -<p>Converts <span class="kwd">int</span> to its octal representation.</p></div> +<pre><code> ds "posts" ('author dget "h3rald" ==) dquery +</code></pre></div></div> -<p><a id="min-operator-id-to-semver"></a> -<span class="reference-title">to-semver</span></p> +<p><a id="min-operator-id-read"></a> +<span class="reference-title">read</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict:datastore</span></span></p> -<p>Given a a dictionary <span class="kwd">dict</span> containing a <strong>major</strong>, <strong>minor</strong>, and <strong>patch</strong> key/value pairs , it pushes a basic <a href="https://semver.org">SemVer</a>-compliant string (with no additional labels) <span class="kwd">str</span> on the stack.</p></div> +<p>Reads the previously-created datastore from the file <span class="kwd">'sym</span> and puts the resulting datastore instance on the stack.</p></div> -<p><a id="min-operator-id-uppercase"></a> -<span class="reference-title">uppercase</span></p> +<p><a id="min-operator-id-write"></a> +<span class="reference-title">write</span></p> -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">'sym<sub>2</sub></span></span></p> +<div class="operator"><p><span class="kwd"> <span class="kwd">dict:datastore</span> <strong>⇒</strong> <span class="kwd">dict:datastore</span></span></p> -<p>Returns a copy of <span class="kwd">'sym</span> converted to uppercase.</p></div> +<p>Writes the contents of the datastore <span class="kwd">dict:datastore</span> to the filesystem.</p></div> <a id="<code>sys</code>-Module"></a> <h3><code>sys</code> Module<a href="#document-top" title="Go to top"></a></h3>@@ -6108,7 +6741,7 @@ <div class="sidebar"><p>Example</p>
<p>The following program makes the file <strong>/tmp/test.txt</strong> readable, writable and executable by its owner, and readable and executable by users of the same group and all other users:</p> -<p><code>"/tmp/test.txt 755 chmod"</code></p></div></div> +<p><code>"/tmp/test.txt 755 sys.chmod"</code></p></div></div> <p><a id="min-operator-id-cd"></a> <span class="reference-title">cd</span></p>@@ -6257,237 +6890,6 @@ <div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <span class="kwd">'sym</span> <strong>⇒</strong> ∅</span></p>
<p>Compresses files included in quotation <span class="kwd">quot</span> into zip file <span class="kwd">'sym</span>.</p></div> -<a id="<code>num</code>-Module"></a> -<h3><code>num</code> Module<a href="#document-top" title="Go to top"></a></h3> - -<p><a id="min-operator-id-+"></a> -<span class="reference-title">+</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <span class="kwd">num<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>3</sub></span></span></p> - -<p>Sums <span class="kwd">num<sub>1</sub></span> and <span class="kwd">num<sub>2</sub></span>.</p></div> - -<p><a id="min-operator-id--"></a> -<span class="reference-title">-</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <span class="kwd">num<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>3</sub></span></span></p> - -<p>Subtracts <span class="kwd">num<sub>2</sub></span> from <span class="kwd">num<sub>1</sub></span>.</p></div> - -<p><a id="min-operator-id--inf"></a> -<span class="reference-title">-inf</span></p> - -<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">num</span></span></p> - -<p>Returns negative infinity.</p></div> - -<p><a id="min-operator-id-&ast;"></a> -<span class="reference-title">*</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <span class="kwd">num<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>3</sub></span></span></p> - -<p>Multiplies <span class="kwd">num<sub>1</sub></span> by <span class="kwd">num<sub>2</sub></span>.</p></div> - -<p><a id="min-operator-id-/"></a> -<span class="reference-title">/</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <span class="kwd">num<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>3</sub></span></span></p> - -<p>Divides <span class="kwd">num<sub>1</sub></span> by <span class="kwd">num<sub>2</sub></span>.</p></div> - -<p><a id="min-operator-id-avg"></a> -<span class="reference-title">avg</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">num</span></span></p> - -<p>Returns the average of the items of <span class="kwd">quot</span>.</p></div> - -<p><a id="min-operator-id-base"></a> -<span class="reference-title">base</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">"dec"|"hex"|"oct"|"bin"</span> <strong>⇒</strong> ∅</span></p> - -<p>Sets the numeric base used to represent integers.</p></div> - -<p><a id="min-operator-id-base?"></a> -<span class="reference-title">base?</span></p> - -<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">"dec"|"hex"|"oct"|"bin"</span></span></p> - -<p>Returns the numeric base currently used to represent integers (default: <span class="kwd">"dec"</span>).</p></div> - -<p><a id="min-operator-id-bitand"></a> -<span class="reference-title">bitand</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>3</sub></span></span></p> - -<p>Computes the bitwise <em>and</em> of integer <span class="kwd">int<sub>1</sub></span> and <span class="kwd">int<sub>2</sub></span>.</p></div> - -<p><a id="min-operator-id-bitclear"></a> -<span class="reference-title">bitclear</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">int<sub>2</sub></span></span></p> - -<p>Sets the bytes specified via their position in <span class="kwd">int<sub>1</sub></span> through <span class="kwd">quot</span> to 0.</p></div> - -<p><a id="min-operator-id-bitflip"></a> -<span class="reference-title">bitflip</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">int<sub>2</sub></span></span></p> - -<p>Flips the bytes specified via their position in <span class="kwd">int<sub>1</sub></span> through <span class="kwd">quot</span>.</p></div> - -<p><a id="min-operator-id-bitnot"></a> -<span class="reference-title">bitnot</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>2</sub></span></span></p> - -<p>Computes the bitwise <em>complement</em> of <span class="kwd">int<sub>1</sub></span>.</p></div> - -<p><a id="min-operator-id-bitor"></a> -<span class="reference-title">bitor</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>3</sub></span></span></p> - -<p>Computes the bitwise <em>or</em> of integers <span class="kwd">int<sub>1</sub></span> and <span class="kwd">int<sub>2</sub></span>.</p></div> - -<p><a id="min-operator-id-bitparity"></a> -<span class="reference-title">bitparity</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>2</sub></span></span></p> - -<p>Calculate the bit parity in <span class="kwd">int<sub>1</sub></span>. If the number of 1-bits is odd, the parity is 1, otherwise 0.</p></div> - -<p><a id="min-operator-id-bitset"></a> -<span class="reference-title">bitset</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">int<sub>2</sub></span></span></p> - -<p>Sets the bytes specified via their position in <span class="kwd">int<sub>1</sub></span> through <span class="kwd">quot</span> to 0.</p></div> - -<p><a id="min-operator-id-bitxor"></a> -<span class="reference-title">bitxor</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>3</sub></span></span></p> - -<p>Computes the bitwise <em>xor</em> of integers <span class="kwd">int<sub>1</sub></span> and <span class="kwd">int<sub>2</sub></span>.</p></div> - -<p><a id="min-operator-id-even?"></a> -<span class="reference-title">even?</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> - -<p>Returns <span class="kwd">true</span> if <span class="kwd">int</span> is even, <span class="kwd">false</span> otherwise.</p></div> - -<p><a id="min-operator-id-div"></a> -<span class="reference-title">div</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>3</sub></span></span></p> - -<p>Divides <span class="kwd">int<sub>1</sub></span> by <span class="kwd">int<sub>2</sub></span> (integer division).</p></div> - -<p><a id="min-operator-id-inf"></a> -<span class="reference-title">inf</span></p> - -<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">num</span></span></p> - -<p>Returns infinity.</p></div> - -<p><a id="min-operator-id-med"></a> -<span class="reference-title">med</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">num</span></span></p> - -<p>Returns the median of the items of <span class="kwd">quot</span>.</p></div> - -<p><a id="min-operator-id-mod"></a> -<span class="reference-title">mod</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>3</sub></span></span></p> - -<p>Returns the integer module of <span class="kwd">int<sub>1</sub></span> divided by <span class="kwd">int<sub>2</sub></span>.</p></div> - -<p><a id="min-operator-id-nan"></a> -<span class="reference-title">nan</span></p> - -<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> nan</span></p> - -<p>Returns <strong>NaN</strong> (not a number).</p></div> - -<p><a id="min-operator-id-odd?"></a> -<span class="reference-title">odd?</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">bool</span></span></p> - -<p>Returns <span class="kwd">true</span> if <span class="kwd">int</span> is odd, <span class="kwd">false</span> otherwise.</p></div> - -<p><a id="min-operator-id-pred"></a> -<span class="reference-title">pred</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>2</sub></span></span></p> - -<p>Returns the predecessor of <span class="kwd">int<sub>1</sub></span>.</p></div> - -<p><a id="min-operator-id-product"></a> -<span class="reference-title">product</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> - -<p>Returns the product of all items of <span class="kwd">quot</span>. <span class="kwd">quot</span> is a quotation of integers.</p></div> - -<p><a id="min-operator-id-random"></a> -<span class="reference-title">random</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>2</sub></span></span></p> - -<p>Returns a random number <span class="kwd">int<sub>2</sub></span> between 0 and <span class="kwd">int<sub>1</sub></span>-1.</p> - -<div class="note"><p>Note</p> - -<p>You must call <code>randomize</code> to initialize the random number generator, otherwise the same sequence of numbers will be returned.</p></div></div> - -<p><a id="min-operator-id-randomize"></a> -<span class="reference-title">randomize</span></p> - -<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> {{null}</span></p> - -<p>Initializes the random number generator using a seed based on the current timestamp.</p></div> - -<p><a id="min-operator-id-range"></a> -<span class="reference-title">range</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">quot<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">quot<sub>2</sub></span></span></p> - -<p>Takes a quotation <span class="kwd">quot<sub>1</sub></span> of two or three integers in the form of <em>start</em>, <em>end</em> and an optional <em>step</em> (1 if not specified) and generates the sequence and returns the resulting quotation of integers <span class="kwd">quot<sub>2</sub></span>.</p></div> - -<p><a id="min-operator-id-shl"></a> -<span class="reference-title">shl</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>3</sub></span></span></p> - -<p>Computes the <em>shift left</em> operation of <span class="kwd">int<sub>1</sub></span> and <span class="kwd">int<sub>2</sub></span>.</p></div> - -<p><a id="min-operator-id-shr"></a> -<span class="reference-title">shr</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <span class="kwd">int<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>3</sub></span></span></p> - -<p>Computes the <em>shift right</em> operation of <span class="kwd">int<sub>1</sub></span> and <span class="kwd">int<sub>2</sub></span>.</p></div> - -<p><a id="min-operator-id-succ"></a> -<span class="reference-title">succ</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">int<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">int<sub>2</sub></span></span></p> - -<p>Returns the successor of <span class="kwd">int<sub>1</sub></span>.</p></div> - -<p><a id="min-operator-id-sum"></a> -<span class="reference-title">sum</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">quot</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> - -<p>Returns the sum of all items of <span class="kwd">quot</span>. <span class="kwd">quot</span> is a quotation of integers.</p></div> - <a id="<code>time</code>-Module"></a> <h3><code>time</code> Module<a href="#document-top" title="Go to top"></a></h3>@@ -6498,15 +6900,15 @@ <div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">flt</span></span></p>
<p>Returns the current time as Unix timestamp with microseconds.</p></div> -<p><a id="min-operator-id-timestamp"></a> -<span class="reference-title">timestamp</span></p> +<p><a id="min-operator-id-stamp"></a> +<span class="reference-title">stamp</span></p> <div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">int</span></span></p> <p>Returns the current time as Unix timestamp.</p></div> -<p><a id="min-operator-id-timeinfo"></a> -<span class="reference-title">timeinfo</span></p> +<p><a id="min-operator-id-info"></a> +<span class="reference-title">info</span></p> <div class="operator"><p><span class="kwd"> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">dict:timeinfo</span></span></p>@@ -6526,8 +6928,8 @@ <div class="operator"><p><span class="kwd"> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">str</span></span></p>
<p>Returns an ISO 8601 string representing the combined date and time in UTC of timestamp <span class="kwd">int</span>.</p></div> -<p><a id="min-operator-id-tformat"></a> -<span class="reference-title">tformat</span></p> +<p><a id="min-operator-id-format"></a> +<span class="reference-title">format</span></p> <div class="operator"><p><span class="kwd"> <span class="kwd">int</span> <span class="kwd">str</span> <strong>⇒</strong> <span class="kwd">str</span></span></p>@@ -6537,508 +6939,6 @@ <div class="tip"><p>Tip</p>
<p>For information on special characters in the format string, see the <a href="https://nim-lang.org/docs/times.html#format,TimeInfo,string">format</a> nim method.</p></div></div> -<a id="<code>crypto</code>-Module"></a> -<h3><code>crypto</code> Module<a href="#document-top" title="Go to top"></a></h3> - -<p><a id="min-operator-id-aes"></a> -<span class="reference-title">aes</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym<sub>1</sub></span> <span class="kwd">'sym<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">str</span></span></p> - -<p>Encrypts or decrypts <span class="kwd">'sym<sub>1</sub></span> using the Advanced Encryption Standard (AES) in CTR mode, using <span class="kwd">'sym<sub>2</sub></span> as password.</p></div> - -<p><a id="min-operator-id-decode"></a> -<span class="reference-title">decode</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> - -<p>Decodes the Base64-encoded string <span class="kwd">'sym</span>.</p></div> - -<p><a id="min-operator-id-encode"></a> -<span class="reference-title">encode</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> - -<p>Base64-encodes <span class="kwd">'sym</span>.</p></div> - -<p><a id="min-operator-id-md4"></a> -<span class="reference-title">md4</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> - -<p>Returns the MD4 hash of <span class="kwd">'sym</span>.</p></div> - -<p><a id="min-operator-id-md5"></a> -<span class="reference-title">md5</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> - -<p>Returns the MD5 hash of <span class="kwd">'sym</span>.</p></div> - -<p><a id="min-operator-id-sha1"></a> -<span class="reference-title">sha1</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> - -<p>Returns the SHA1 hash of <span class="kwd">'sym</span>.</p></div> - -<p><a id="min-operator-id-sha224"></a> -<span class="reference-title">sha224</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> - -<p>Returns the SHA224 hash of <span class="kwd">'sym</span>.</p></div> - -<p><a id="min-operator-id-sha256"></a> -<span class="reference-title">sha256</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> - -<p>Returns the SHA256 hash of <span class="kwd">'sym</span>.</p></div> - -<p><a id="min-operator-id-sha384"></a> -<span class="reference-title">sha384</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> - -<p>Returns the SHA384 hash of <span class="kwd">'sym</span>.</p></div> - -<p><a id="min-operator-id-sha512"></a> -<span class="reference-title">sha512</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> - -<p>Returns the SHA512 hash of <span class="kwd">'sym</span>.</p></div> - -<a id="<code>math</code>-Module"></a> -<h3><code>math</code> Module<a href="#document-top" title="Go to top"></a></h3> - -<p><a id="min-operator-id-abs"></a> -<span class="reference-title">abs</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Calculates tbe absolute value of <span class="kwd">num<sub>1</sub></span>.</p></div> - -<p><a id="min-operator-id-acos"></a> -<span class="reference-title">acos</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Calculates the arc cosine of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> - -<p><a id="min-operator-id-asin"></a> -<span class="reference-title">asin</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Calculates the arc sine of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> - -<p><a id="min-operator-id-atan"></a> -<span class="reference-title">atan</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Calculates the arc tangent of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> - -<p><a id="min-operator-id-ceil"></a> -<span class="reference-title">ceil</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> - -<p>Returns the smallest integer <span class="kwd">int</span> that is not smaller than <span class="kwd">num</span>.</p></div> - -<p><a id="min-operator-id-cos"></a> -<span class="reference-title">cos</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Calculates the cosine of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> - -<p><a id="min-operator-id-cosh"></a> -<span class="reference-title">cosh</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Calculates the hyperbolic cosine of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> - -<p><a id="min-operator-id-d2r"></a> -<span class="reference-title">d2r</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Converts <span class="kwd">num<sub>1</sub></span> from degrees to radians.</p></div> - -<p><a id="min-operator-id-e"></a> -<span class="reference-title">e</span></p> - -<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">num</span></span></p> - -<p>Returns the value of the <em>e</em> constant (Euler’s number).</p></div> - -<p><a id="min-operator-id-floor"></a> -<span class="reference-title">floor</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num</span> <strong>⇒</strong> <span class="kwd">int</span></span></p> - -<p>Returns the largest integer <span class="kwd">int</span> that is not greater than <span class="kwd">num</span>.</p></div> - -<p><a id="min-operator-id-ln"></a> -<span class="reference-title">ln</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Calculates the natural logarithm of <span class="kwd">num<sub>1</sub></span>.</p></div> - -<p><a id="min-operator-id-log10"></a> -<span class="reference-title">log10</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Calculates the common logarithm of <span class="kwd">num<sub>1</sub></span>.</p></div> - -<p><a id="min-operator-id-log2"></a> -<span class="reference-title">log2</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Calculates the binary logarithm of <span class="kwd">num<sub>1</sub></span>.</p></div> - -<p><a id="min-operator-id-pi"></a> -<span class="reference-title">pi</span></p> - -<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">num</span></span></p> - -<p>Returns the value of the π constant.</p></div> - -<p><a id="min-operator-id-pow"></a> -<span class="reference-title">pow</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <span class="kwd">num<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>3</sub></span></span></p> - -<p>Computes <span class="kwd">num<sub>1</sub></span> to power raised of <span class="kwd">num<sub>2</sub></span>.</p></div> - -<p><a id="min-operator-id-r2d"></a> -<span class="reference-title">r2d</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Converts <span class="kwd">num<sub>1</sub></span> from radians to degrees.</p></div> - -<p><a id="min-operator-id-round"></a> -<span class="reference-title">round</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Rounds <span class="kwd">num<sub>1</sub></span> to the <span class="kwd">int</span><sup>th</sup> decimal place.</p></div> - -<p><a id="min-operator-id-sin"></a> -<span class="reference-title">sin</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Calculates the sine of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> - -<p><a id="min-operator-id-sinh"></a> -<span class="reference-title">sinh</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Calculates the hyperbolic sine of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> - -<p><a id="min-operator-id-sqrt"></a> -<span class="reference-title">sqrt</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Returns square root of <span class="kwd">num<sub>1</sub></span>.</p></div> - -<p><a id="min-operator-id-tan"></a> -<span class="reference-title">tan</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Calculates the tangent of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> - -<p><a id="min-operator-id-tanh"></a> -<span class="reference-title">tanh</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Calculates the hyperbolic tangent of <span class="kwd">num<sub>1</sub></span> (in radians).</p></div> - -<p><a id="min-operator-id-tau"></a> -<span class="reference-title">tau</span></p> - -<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> <span class="kwd">num</span></span></p> - -<p>Returns the value of the τ constant (2π).</p></div> - -<p><a id="min-operator-id-trunc"></a> -<span class="reference-title">trunc</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">num<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">num<sub>2</sub></span></span></p> - -<p>Truncates <span class="kwd">num</span> to the decimal point.</p></div> - -<a id="<code>net</code>-Module"></a> -<h3><code>net</code> Module<a href="#document-top" title="Go to top"></a></h3> - -<p><a id="min-operator-id-accept"></a> -<span class="reference-title">accept</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict:socket<sub>1</sub></span> <span class="kwd">dict:socket<sub>2</sub></span> <strong>⇒</strong> <span class="kwd">dict:socket<sub>1</sub></span></span></p> - -<p>Makes <span class="kwd">dict:socket<sub>2</sub></span> (server) accept a connection from <span class="kwd">dict:socket<sub>1</sub></span> (client). Returns the client socket <span class="kwd">dict:socket<sub>1</sub></span> from which it will be possible to receive data from.</p></div> - -<p><a id="min-operator-id-close"></a> -<span class="reference-title">close</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict:socket</span> <strong>⇒</strong> ∅</span></p> - -<p>Closes a previously-opened socket.</p></div> - -<p><a id="min-operator-id-connect"></a> -<span class="reference-title">connect</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict:socket</span> <span class="kwd">str</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">dict:socket</span></span></p> - -<p>Connects socket <span class="kwd">dict:socket</span> to address <span class="kwd">str</span> and port <span class="kwd">int</span>.</p> - -<div class="sidebar"><p>Example</p> - -<p>The following code shows how to send a message to a server running on localhost:7777. The message is passed as the first argument to the program.</p> - -<pre><code>{} socket "localhost" 7777 connect :cli - -args 1 get :msg - -"Sending message \"$1\" to localhost:7777..." (msg) => % puts! - -cli "$1\n" (msg) => % send - -"Done." puts! - -cli close -</code></pre></div></div> - -<p><a id="min-operator-id-listen"></a> -<span class="reference-title">listen</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <span class="kwd">dict:socket<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">dict:socket<sub>2</sub></span></span></p> - -<p>Makes socket <span class="kwd">dict:socket<sub>1</sub></span> listen to the specified address and port. <span class="kwd">dict</span> can be empty or contain any of the following properties, used to specify the address and port to listen to respectively.</p> - -<dl> -<dt>address</dt> -<dd>The address to listen to (default: <strong>0.0.0.0</strong>).</dd> -<dt>port</dt> -<dd>The port to listen to (default: <strong>80</strong>).</dd> -</dl> - -<div class="sidebar"><p>Example</p> - -<p>The following code shows how to create a simple server that listens on port 7777, prints data received from clients, and exits when it receives the string <code>exit</code>:</p> - -<pre><code>{} socket {"127.0.0.1" :address 7777 :port} listen :srv - -"Server listening on localhost:7777" puts! - -{} socket :cli -"" :line -(line "exit" !=) -( - srv cli accept #cli - cli recv-line @line - "Received: $1" (line) => % puts! -) while - -"Exiting..." puts! - -srv close -</code></pre></div></div> - -<p><a id="min-operator-id-recv"></a> -<span class="reference-title">recv</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict:socket</span> <span class="kwd">int</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> - -<p>Waits to receive <span class="kwd">int</span> characters from <span class="kwd">dict:socket</span> and returns the resulting data <span class="kwd">str</span>.</p></div> - -<p><a id="min-operator-id-recv-line"></a> -<span class="reference-title">recv-line</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict:socket</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> - -<p>Waits to receive a line of data from <span class="kwd">dict:socket</span> and returns the resulting data <span class="kwd">str</span>. <code>""</code> is returned if <span class="kwd">dict:socket</span> is disconnected.</p> - -<div class="sidebar"><p>Example</p> - -<p>The following code shows how to make a simple GET request to <a href="http://httpbin.org/uuid">http://httpbin.org/uuid</a> to receive a random UUID and display its response:</p> - -<pre><code>{} socket "httpbin.org" 80 connect :cli - -cli "GET /uuid HTTP/1.1\r\nHost: httpbin.org\r\n\r\n" send - -cli recv-line puts :line -(line "}" match not) -( - cli recv-line puts @line -) while -</code></pre></div></div> - -<p><a id="min-operator-id-send"></a> -<span class="reference-title">send</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict:socket</span> <span class="kwd">str</span> <strong>⇒</strong> ∅</span></p> - -<p>Sends <span class="kwd">str</span> to the connected socket <span class="kwd">dict:socket</span>.</p></div> - -<p><a id="min-operator-id-socket"></a> -<span class="reference-title">socket</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <strong>⇒</strong> <span class="kwd">dict:socket</span></span></p> - -<p>Opens a new socket.</p> - -<p><span class="kwd">dict</span> can be empty or contain any of the following properties, used to specify the domain, type and protocol of the socket respectively.</p> - -<dl> -<dt>domain</dt> -<dd><p>The socket domain. It can be set to one of the following values:</p> - -<ul> -<li><strong>ipv4</strong> (default): Internet Protocol version 4.</li> -<li><strong>ipv6</strong>: Internet Protocol version 6.</li> -<li><strong>unix</strong>: local Unix file (not supported on Windows systems).</li> -</ul> -</dd> -<dt>type</dt> -<dd><p>The socket type. It can be set to one of the following values:</p> - -<ul> -<li><strong>stream</strong> (default): Reliable stream-oriented service or Stream Socket.</li> -<li><strong>dgram</strong>: Datagram service or Datagram Socket.</li> -<li><strong>raw</strong>: Raw protocols atop the network layer.</li> -<li><strong>seqpacket</strong>: Reliable sequenced packet service.</li> -</ul> -</dd> -<dt>protocol</dt> -<dd><p>The socket protocol. It can be set to one of the following values:</p> - -<ul> -<li><strong>tcp</strong> (default): Transmission Control Protocol.</li> -<li><strong>udp</strong>: User Datagram Protocol.</li> -<li><strong>ipv4</strong>: Internet Protocol version 4 (not supported on Windows systems).</li> -<li><strong>ipv6</strong>: Internet Protocol version 6 (not supported on Windows systems).</li> -<li><strong>raw</strong>: Raw IP Packets protocol (not supported on Windows systems).</li> -<li><strong>icmp</strong>: Internet Control Message Protocol (not supported on Windows systems).</li> -</ul> -</dd> -</dl></div> - -<a id="<code>http</code>-Module"></a> -<h3><code>http</code> Module<a href="#document-top" title="Go to top"></a></h3> - -<p><a id="min-operator-id-download"></a> -<span class="reference-title">download</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <span class="kwd">str<sub>2</sub></span> <strong>⇒</strong> ∅</span></p> - -<p>Downloads the contents of URL <span class="kwd">str<sub>1</sub></span> to the local file <span class="kwd">str<sub>2</sub></span>.</p></div> - -<p><a id="min-operator-id-get-content"></a> -<span class="reference-title">get-content</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">str<sub>1</sub></span> <strong>⇒</strong> <span class="kwd">str<sub>2</sub></span></span></p> - -<p>Retrieves the contents of URL <span class="kwd">str<sub>1</sub></span> as <span class="kwd">str<sub>2</sub></span>.</p></div> - -<p><a id="min-operator-id-request"></a> -<span class="reference-title">request</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <strong>⇒</strong> <span class="kwd">dict:http-response</span></span></p> - -<p>Performs an HTTP request. Note that <span class="kwd">dict</span> is can be a standard (untyped) dictionary but its fields will be validated like if it was a <span class="kwd">dict:http-request</span>.</p> - -<div class="sidebar"><p>Example</p> - -<p>The following code constructs <span class="kwd">dict</span> and passes it to the <strong>request</strong> operator to perform an HTTP GET request to <a href="http://httpbin.org/ip">http://httpbin.org/ip</a>:</p> - -<pre><code>{} - "GET" 'method dget - "http://httpbin.org/ip" 'url dset -request -</code></pre></div></div> - -<p><a id="min-operator-id-start-server"></a> -<span class="reference-title">start-server</span></p> - -<div class="operator"><p><span class="kwd"> <span class="kwd">dict</span> <strong>⇒</strong> ∅</span></p> - -<p>Starts an HTTP server based on the configuration provided in <span class="kwd">dict</span>.</p> - -<p><span class="kwd">dict</span> is a dictionary containing the following keys:</p> - -<dl> -<dt>address</dt> -<dd>The address to bind the server to (default: <strong>127.0.0.1</strong>).</dd> -<dt>port</dt> -<dd>The port to bind the server to.</dd> -<dt>handler</dt> -<dd>A quotation with the following signature, used to handle all incoming requests: <span class="kwd"><span class="kwd">dict:http-request</span> ⇒ <span class="kwd">dict:http-response</span></span></dd> -</dl> - -<div class="sidebar"><p>Example</p> - -<p>The following program starts a very simple HTTP server that can display the current timestamp or date and time in ISO 8601 format:</p> - -<pre><code>; Define the request handler -( - ; Assume there is a request on the stack, take it off and give it the name req - :req - ; Let's see what we got (print req to standard out) - "THE REQUEST:" puts! req puts! - ; The request is a dictionary, we retrieve the value for the key url, and give it the name url - req /url :url - "THE URL is '$1'." url quote % puts! - ; Constuct response body - ( - (("/datetime" url ==) (timestamp datetime)) - (("/timestamp" url ==) (timestamp string)) - (("/shutdown" url ==) ("Stopping server..." puts! stop-server)) - (("/" url ==) ( - ; this is a bit short, but works with Chrome, IE, Edge, Safari - "<a href='/datetime'>datetime</a>, <a href='/timestamp'>timestamp</a>, <a href='/shutdown'>stop</a>" - )) - ((true) ("Invalid Request: $1" url quote %)) - ) case - :body - ; Prepare the response - {} body 'body dset - dup puts! -) -; The request handler is ready, give it the name handler -:handler - -; Create the parameter dictionary for the server -{} -handler 'handler dset -5555 'port dset - -; Start server -"Server started on port 5555." puts! -"Press Ctrl+C to stop." puts! -start-server -</code></pre></div></div> - -<p><a id="min-operator-id-stop-server"></a> -<span class="reference-title">stop-server</span></p> - -<div class="operator"><p><span class="kwd"> ∅ <strong>⇒</strong> ∅</span></p> - -<p>Stops the currently-running HTTP server. This operator should be used within an HTTP server handler quotation.</p></div> - <a id="<code>xml</code>-Module"></a> <h3><code>xml</code> Module<a href="#document-top" title="Go to top"></a></h3>@@ -7080,43 +6980,43 @@ <div class="operator"><p><span class="kwd"> <span class="kwd">xml-node</span> <strong>⇒</strong> <span class="kwd">str</span></span></p>
<p>Returns a <span class="kwd">str</span> representing an XML node.</p></div> -<p><a id="min-operator-id-xcdata"></a> -<span class="reference-title">xcdata</span></p> +<p><a id="min-operator-id-cdata"></a> +<span class="reference-title">cdata</span></p> <div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict:xml-cdata</span></span></p> <p>Returns a <span class="kwd">dict:xml-cdata</span> representing an XML CDATA section.</p></div> -<p><a id="min-operator-id-xcomment"></a> -<span class="reference-title">xcomment</span></p> +<p><a id="min-operator-id-comment"></a> +<span class="reference-title">comment</span></p> <div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict:xml-comment</span></span></p> <p>Returns a <span class="kwd">dict:xml-comment</span> representing an XML comment.</p></div> -<p><a id="min-operator-id-xelement"></a> -<span class="reference-title">xelement</span></p> +<p><a id="min-operator-id-element"></a> +<span class="reference-title">element</span></p> <div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict:xml-element</span></span></p> <p>Returns a <span class="kwd">dict:xml-element</span> representing an XML element (it will be an empty element with no attributes or children).</p></div> -<p><a id="min-operator-id-xentity"></a> -<span class="reference-title">xentity</span></p> +<p><a id="min-operator-id-entity"></a> +<span class="reference-title">entity</span></p> <div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict:xml-entity</span></span></p> <p>Returns a <span class="kwd">dict:xml-entity</span> representing an XML entity.</p></div> -<p><a id="min-operator-id-xescape"></a> -<span class="reference-title">xescape</span></p> +<p><a id="min-operator-id-escape"></a> +<span class="reference-title">escape</span></p> <div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">str</span></span></p> <p>Converts any <code><</code>, <code>></code>, <code>&</code>, <code>'</code>, and <code>"</code> present in <span class="kwd">'sym</span> into the corresponding XML entities.</p></div> -<p><a id="min-operator-id-xentity2utf8"></a> -<span class="reference-title">xentity2utf8</span></p> +<p><a id="min-operator-id-entity2utf8"></a> +<span class="reference-title">entity2utf8</span></p> <div class="operator"><p><span class="kwd"> <span class="kwd">dict:xml-entity</span> <strong>⇒</strong> <span class="kwd">str</span></span></p>@@ -7126,11 +7026,11 @@ <div class="sidebar"><p>Example</p>
<p>The following program prints <code>p</code> to the screen:</p> -<pre><code> "&gt;" xentity xentity2utf8 puts +<pre><code> "&gt;" xml.entity xml.entity2utf8 puts! </code></pre></div></div> -<p><a id="min-operator-id-xquery"></a> -<span class="reference-title">xquery</span></p> +<p><a id="min-operator-id-query"></a> +<span class="reference-title">query</span></p> <div class="operator"><p><span class="kwd"> <span class="kwd">dict:xml-element</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict:xml-element</span></span></p>@@ -7145,7 +7045,7 @@ <li class='test'>first</li>
<li class='other'>second</li> <li class='test'>third</li> </ul>" -from-xml ".test" xquery +xml.from-xml ".test" xml.query </code></pre> <p>Returns the following:</p>@@ -7158,8 +7058,8 @@ ;xml-element
} </code></pre></div></div> -<p><a id="min-operator-id-xqueryall"></a> -<span class="reference-title">xqueryall</span></p> +<p><a id="min-operator-id-queryall"></a> +<span class="reference-title">queryall</span></p> <div class="operator"><p><span class="kwd"> <span class="kwd">dict:xml-element</span> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict:xml-element</span></span></p>@@ -7174,7 +7074,7 @@ <li class='test'>first</li>
<li class='other'>second</li> <li class='test'>third</li> </ul>" -from-xml ".test" xqueryall +xml.from-xml ".test" xml.queryall </code></pre> <p>Returns the following:</p>@@ -7193,15 +7093,15 @@ ;xml-element
}) </code></pre></div></div> -<p><a id="min-operator-id-xtext"></a> -<span class="reference-title">xtext</span></p> +<p><a id="min-operator-id-text"></a> +<span class="reference-title">text</span></p> <div class="operator"><p><span class="kwd"> <span class="kwd">'sym</span> <strong>⇒</strong> <span class="kwd">dict:xml-text</span></span></p> <p>Returns a <span class="kwd">dict:xml-text</span> representing an XML text node.</p></div> </div> <div id="footer"> - <p><span class="copy"></span> Fabio Cevasco – June 18, 2024</p> + <p><span class="copy"></span> Fabio Cevasco – October 19, 2024</p> <p><span>Powered by</span> <a href="https://h3rald.com/hastyscribe" class="hastyscribe-logo"> <img src="data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='350.755'%20height='102.312'%3E%3Cg%20font-family='Mr%20Bedfort'%20font-size='72'%20font-weight='400'%20letter-spacing='0'%20style='line-height:125%25;-inkscape-font-specification:Mr%20Bedfort'%20word-spacing='0'%3E%3Cpath%20d='m17.352%2044.784-1.296-5.616c-3.552-1.2-7.2-2.52-10.944-3.96-.048%200-.072.024-.072.072.048%201.008%204.152%204.176%2012.312%209.504m6.12-3.24c.96%204.224%201.56%206.96%201.8%208.208%2011.424%206.96%2018.744%2010.464%2021.96%2010.512l-3.888-13.896c-6.432-1.248-13.056-2.856-19.872-4.824M18%204.752l-.288%204.608c0%204.464%201.512%2013.32%204.536%2026.568%206.24%201.92%2012.792%203.576%2019.656%204.968-1.968-7.44-3.408-13.848-4.32-19.224-.912-5.424-1.368-11.208-1.368-17.352.096-.528%201.032-1.368%202.808-2.52C40.848.6%2042.144%200%2042.912%200c.384%200%20.576.264.576.792l-.36%205.04c0%207.776%202.016%2019.872%206.048%2036.288%205.664.864%2010.944%201.368%2015.84%201.512.336%200%20.504.168.504.504%200%20.288-1.056%201.008-3.168%202.16-2.112%201.152-3.36%201.728-3.744%201.728-2.256%200-4.944-.192-8.064-.576l2.808%2010.08c0%20.816-1.704%202.208-5.112%204.176-3.84%200-11.376-3.336-22.608-10.008.48%202.688.768%205.04.864%207.056-.096.096-1.056.576-2.88%201.44-1.824.864-2.856%201.296-3.096%201.296-.624%200-.936-.456-.936-1.368-.432-4.56-1.056-9-1.872-13.32-4.896-3.168-9.072-6.048-12.528-8.64C1.728%2035.52%200%2033.912%200%2033.336c0-.768%201.584-2.088%204.752-3.96l.216-.144c3.264%201.536%206.48%202.88%209.648%204.032-2.736-10.416-4.104-17.496-4.104-21.24%200-1.68.192-3%20.576-3.96.096-.144%201.152-.816%203.168-2.016%202.016-1.2%203.168-1.8%203.456-1.8.192%200%20.288.168.288.504M78.01%2040.104c.144-.288%201.44-.432%203.888-.432%202.496%200%203.744.36%203.744%201.08%200%20.144-.144.432-.432.864-1.68%202.304-2.52%204.704-2.52%207.2%200%202.496.576%204.56%201.728%206.192%201.2%201.584%202.712%202.376%204.536%202.376%202.976%200%206-2.112%209.072-6.336l.504.864c-3.744%205.952-7.872%208.928-12.384%208.928-3.408%200-6.024-1.752-7.848-5.256-.768%201.152-2.016%202.232-3.744%203.24-1.728%201.008-3.36%201.512-4.896%201.512-4.176%200-6.264-1.752-6.264-5.256%200-2.736%201.152-5.592%203.456-8.568%202.352-3.024%204.656-4.536%206.912-4.536.192%200%20.288.072.288.216%200%20.144-.096.312-.288.504-1.008.528-1.872%201.632-2.592%203.312a13.12%2013.12%200%200%200-1.008%205.04c0%203.504%201.344%205.256%204.032%205.256.768%200%201.488-.192%202.16-.576.72-.432%201.152-1.032%201.296-1.8a14.973%2014.973%200%200%201-.936-5.256c0-1.824.072-3.36.216-4.608.384-2.64.744-3.96%201.08-3.96'/%3E%3Cpath%20d='m119.772%2051.048.504.864c-2.016%203.216-4.44%205.664-7.272%207.344-2.832%201.728-5.52%202.592-8.064%202.592-5.136%200-8.544-2.208-10.224-6.624%200-.24.552-1.032%201.656-2.376%201.104-1.344%201.824-2.016%202.16-2.016.384%200%20.6.12.648.36.288%201.536%201.08%203.168%202.376%204.896%201.344%201.728%202.568%202.592%203.672%202.592%201.728%200%202.616-.48%202.664-1.44%200-1.488-1.752-3.744-5.256-6.768-1.296-1.152-2.496-2.616-3.6-4.392-1.056-1.824-1.584-3.696-1.584-5.616%200-.384.072-.648.216-.792%202.112-1.92%203.504-2.88%204.176-2.88.528%200%20.792.408.792%201.224.048%201.776.792%203.624%202.232%205.544%201.488%201.872%202.928%203.672%204.32%205.4%201.44%201.728%202.16%203.456%202.16%205.184%200%201.68-.84%203.192-2.52%204.536%203.936-.096%207.584-2.64%2010.944-7.632'/%3E%3Cpath%20d='M122.633%2024.264c.768%2022.56%204.248%2033.84%2010.44%2033.84%202.64%200%205.808-2.352%209.504-7.056l.504.864c-4.512%206.72-8.832%2010.08-12.96%2010.08-4.08%200-7.392-3.12-9.936-9.36-2.544-6.288-3.888-14.64-4.032-25.056%200%200-.347-5.071%200-4.827.096-3.648.264-5.229.504-8.493%200-.432.216-.72.648-.864%202.88-1.152%204.488-1.728%204.824-1.728.384%200%20.576.216.576.648a165.13%20165.13%200%200%200-.144%206.552'/%3E%3Cpath%20d='M157.87%2082.728c0%203.984%201.176%207.728%203.528%2011.232%202.352%203.504%204.536%205.256%206.552%205.256%201.728%200%202.592-1.536%202.592-4.608%200-2.256-.84-5.712-2.52-10.368a1998.05%201998.05%200%200%200-2.808-7.704%20452.798%20452.798%200%200%201-2.952-8.136c-2.928%204.464-4.392%209.24-4.392%2014.328m15.84%205.544c0%204.704-.792%208.208-2.376%2010.512-1.584%202.352-3.6%203.528-6.048%203.528-3.12%200-6-1.68-8.64-5.04-2.592-3.312-3.888-7.44-3.888-12.384.336-3.408%201.248-6.552%202.736-9.432%201.536-2.88%203.576-5.856%206.12-8.928-1.632-4.464-2.76-7.992-3.384-10.584-2.064%202.64-4.44%203.96-7.128%203.96-2.688%200-5.04-1.368-7.056-4.104-2.016-2.736-3.024-6.672-3.024-11.808%200-.528.384-.888%201.152-1.08%202.304-.48%203.624-.72%203.96-.72.576%200%20.864.288.864.864%200%204.368.984%207.8%202.952%2010.296%201.248%201.536%202.808%202.304%204.68%202.304%201.008%200%202.064-.456%203.168-1.368-.72-3.216-1.08-5.904-1.08-8.064%200-2.208.504-3.816%201.512-4.824%202.064-1.2%203.216-1.8%203.456-1.8.48%200%20.72.36.72%201.08%200%205.232.96%2010.752%202.88%2016.56l1.224%203.816c3.6-3.888%206.336-7.224%208.208-10.008l.504.864c-1.152%201.824-2.208%203.312-3.168%204.464a161.359%20161.359%200%200%201-3.096%203.6%20676.433%20676.433%200%200%201-2.016%202.376c3.504%2010.032%205.424%2015.912%205.76%2017.64.672%203.408%201.008%206.168%201.008%208.28'/%3E%3Cpath%20d='M178.334%2012.888c0%204.608%202.736%208.904%208.208%2012.888%202.544-6.528%203.816-11.712%203.816-15.552%200-1.68-.552-3.24-1.656-4.68-1.104-1.44-2.352-2.16-3.744-2.16-1.344%200-2.568.72-3.672%202.16-1.056%201.44-1.824%202.88-2.304%204.32-.432%201.392-.648%202.4-.648%203.024m-9.36%2046.944c-.336.336-.624.504-.864.504-.384%200-.576-.192-.576-.576%200-.384.096-.696.288-.936%202.16-2.4%204.704-6.024%207.632-10.872a162.099%20162.099%200%200%200%208.064-15.12c-6.144-4.272-9.216-8.64-9.216-13.104%200-2.976.696-6%202.088-9.072%201.44-3.072%203.336-5.616%205.688-7.632%202.4-2.016%204.68-3.024%206.84-3.024%202.208%200%203.696.528%204.464%201.584.816%201.008%201.224%202.496%201.224%204.464%200%203.696-2.232%2010.608-6.696%2020.736%201.584%201.056%203.696%202.352%206.336%203.888a295.464%20295.464%200%200%201%206.84%203.888%2056.857%2056.857%200%200%201%205.76%203.816c3.936%203.024%205.904%206.312%205.904%209.864%200%203.504-1.824%206.792-5.472%209.864-3.648%203.024-7.344%204.536-11.088%204.536-5.904%200-11.16-3.072-15.768-9.216-.528-.72-.792-1.32-.792-1.8%200-.528.6-1.272%201.8-2.232%201.2-1.008%202.136-1.512%202.808-1.512.144%200%20.264.072.36.216%201.296%202.256%203.624%204.656%206.984%207.2%203.36%202.544%206.648%203.816%209.864%203.816%203.984-.288%205.976-2.256%205.976-5.904%200-3.072-1.752-5.952-5.256-8.64-2.592-1.968-5.784-4.032-9.576-6.192-3.792-2.208-6.408-3.792-7.848-4.752-5.808%2012.192-11.064%2020.928-15.768%2026.208M230.382%2041.688c0-1.44-.912-2.16-2.736-2.16-1.824%200-3.336.816-4.536%202.448-1.2%201.632-1.8%203.72-1.8%206.264%200%202.496.96%204.776%202.88%206.84%201.968%202.016%204.896%203.024%208.784%203.024%202.448%200%204.824-.576%207.128-1.728%202.352-1.2%204.344-2.976%205.976-5.328l.504.864c-1.728%203.12-4.392%205.544-7.992%207.272-3.552%201.728-7.152%202.592-10.8%202.592-3.6%200-6.552-.768-8.856-2.304-2.256-1.488-3.384-3.648-3.384-6.48%200-3.6%201.416-7.008%204.248-10.224%202.88-3.216%206.456-4.824%2010.728-4.824%201.488%200%202.592.384%203.312%201.152.72.72%201.08%201.704%201.08%202.952%200%201.2-.432%202.4-1.296%203.6-.864%201.152-1.848%201.728-2.952%201.728-.576%200-1.176-.216-1.8-.648-.576-.48-.864-.864-.864-1.152%200-.336.12-.6.36-.792.24-.24.528-.456.864-.648.768-.384%201.152-1.2%201.152-2.448'/%3E%3Cpath%20d='m251.359%2047.088-1.368-.072c-.48%200-.816.216-1.008.648-.576%201.44-1.488%203.072-2.736%204.896l-.576-.792c.96-1.296%201.704-2.928%202.232-4.896%200-.384-.168-.648-.504-.792-2.16-.72-3.24-2.616-3.24-5.688%200-.672.576-1.296%201.728-1.872%201.152-.624%202.112-.936%202.88-.936.768%200%201.152.336%201.152%201.008%200%203.6%201.68%205.4%205.04%205.4.816%200%201.464-.072%201.944-.216.528-.192.816-.288.864-.288.48%200%20.72.36.72%201.08%200%20.672-.192%201.152-.576%201.44-.336.24-.72.792-1.152%201.656-.432.816-.648%201.776-.648%202.88%200%202.16.624%203.864%201.872%205.112%201.296%201.2%202.88%201.8%204.752%201.8%201.92%200%203.816-.552%205.688-1.656%201.872-1.104%203.504-2.688%204.896-4.752l.504.864c-1.68%202.928-4.008%205.28-6.984%207.056-2.976%201.776-5.64%202.664-7.992%202.664-4.8%200-7.2-2.184-7.2-6.552%200-.816.288-1.92.864-3.312.576-1.392%201.152-2.568%201.728-3.528l.864-1.44c0-.192-.072-.288-.216-.288-1.536.384-2.712.576-3.528.576'/%3E%3Cpath%20d='M273.24%2042.84c-.24%202.016-.36%203.672-.36%204.968%200%204.56.864%208.112%202.592%2010.656%201.776%202.496%203.912%203.744%206.408%203.744%202.544%200%205.064-.888%207.56-2.664%202.496-1.728%204.824-4.272%206.984-7.632l-.504-.864c-3.744%205.136-7.2%207.704-10.368%207.704-2.016%200-3.648-1.08-4.896-3.24-1.248-2.16-1.872-5.088-1.872-8.784%200-1.92.168-3.864.504-5.832%200-.432-.192-.648-.576-.648-.336%200-1.944.576-4.824%201.728-.432.144-.648.432-.648.864m5.976-15.48c.768.816%201.152%201.8%201.152%202.952s-.384%202.136-1.152%202.952c-.72.816-1.608%201.224-2.664%201.224-1.008%200-1.872-.408-2.592-1.224-.72-.816-1.08-1.8-1.08-2.952s.36-2.136%201.08-2.952c.72-.816%201.584-1.224%202.592-1.224%201.056%200%201.944.408%202.664%201.224'/%3E%3Cpath%20d='M310.14%2045.36c-.576%200-.864.576-.864%201.728%200%201.152.456%202.52%201.368%204.104.96%201.536%202.16%202.76%203.6%203.672.048-.24.072-.6.072-1.08%200-2.112-.408-4.032-1.224-5.76-.816-1.776-1.8-2.664-2.952-2.664m-13.464-24.912c0%209.6%201.104%2017.76%203.312%2024.48%202.16-5.904%203.24-13.8%203.24-23.688%200-4.272-.264-7.8-.792-10.584s-1.248-4.176-2.16-4.176c-1.2%200-2.112%201.296-2.736%203.888-.576%202.544-.864%205.904-.864%2010.08m11.448-6.84c0%204.704-.816%2010.32-2.448%2016.848-1.584%206.528-3.312%2011.832-5.184%2015.912%201.488%204.224%203.192%207.488%205.112%209.792%201.92%202.256%203.672%203.384%205.256%203.384s2.64-.984%203.168-2.952c-2.16-.96-4.008-2.496-5.544-4.608-1.488-2.112-2.232-4.224-2.232-6.336%200-1.104.264-1.992.792-2.664.528-.672%201.296-1.008%202.304-1.008%202.496%200%204.416.96%205.76%202.88%201.392%201.872%202.088%204.128%202.088%206.768%200%201.488-.24%202.904-.72%204.248.48.144%201.032.216%201.656.216%202.64%200%204.992-1.68%207.056-5.04l.576.72c-2.16%203.696-4.872%205.544-8.136%205.544-.384%200-.96-.048-1.728-.144-1.68%203.12-4.224%204.68-7.632%204.68-3.936%200-7.536-2.352-10.8-7.056-1.584-2.352-2.856-5.568-3.816-9.648-1.008-4.128-1.512-8.712-1.512-13.752%200-5.04.432-9.6%201.296-13.68.816-4.08%202.064-7.44%203.744-10.08%201.68-2.64%203.6-3.96%205.76-3.96%203.456%200%205.184%203.312%205.184%209.936'/%3E%3Cpath%20d='m332.694%2037.656.072-.936c0-.576-.648-.864-1.944-.864a5.858%205.858%200%200%200-3.528%201.152c-1.008.768-1.512%201.8-1.512%203.096%200%202.304%201.656%203.456%204.968%203.456.528%200%201.056-.072%201.584-.216a5.437%205.437%200%200%201%201.728-.288c.576%200%20.864.192.864.576%200%20.048-.192.168-.576.36-.384.144-.864.384-1.44.72-.528.336-1.08.768-1.656%201.296-1.344%201.248-2.016%202.952-2.016%205.112s.648%203.816%201.944%204.968c1.296%201.104%202.976%201.656%205.04%201.656s4.176-.6%206.336-1.8a14.695%2014.695%200%200%200%205.256-4.896l.504.864c-1.824%203.168-4.368%205.664-7.632%207.488-3.216%201.872-6.168%202.808-8.856%202.808-2.64%200-4.68-.552-6.12-1.656-1.392-1.104-2.088-2.52-2.088-4.248%200-1.776.432-3.408%201.296-4.896.864-1.488%201.608-2.544%202.232-3.168.672-.672%201.152-1.128%201.44-1.368.336-.288.504-.48.504-.576%200-.144-.024-.216-.072-.216-1.536.576-3.024.864-4.464.864-2.544%200-3.816-1.032-3.816-3.096%200-2.784%201.584-5.184%204.752-7.2%203.168-2.016%205.928-3.024%208.28-3.024%202.4%200%203.6.576%203.6%201.728%200%20.72-.384%201.488-1.152%202.304-.768.816-1.464%201.224-2.088%201.224-.96%200-1.44-.408-1.44-1.224'/%3E%3C/g%3E%3Ctext%20xml:space='preserve'%20x='280.368'%20y='13.976'%20font-family='Mr%20Bedfort'%20font-size='40'%20font-weight='400'%20letter-spacing='0'%20style='line-height:125%25;-inkscape-font-specification:Mr%20Bedfort'%20transform='translate(-177.39%20-82.362)'%20word-spacing='0'/%3E%3Cpath%20fill-rule='evenodd'%20d='M99.36%2029.25c-.061-.106.474-.57%201.596-1.31%201.123-.74%202.835-1.75%205.15-2.876%202.313-1.127%205.233-2.365%208.729-3.583%203.496-1.218%207.573-2.41%2012.103-3.567%205.291-1.357%2011.259-2.645%2017.812-3.778%206.554-1.133%2013.693-2.108%2021.297-2.923%2013.686-1.47%2028.926-2.381%2045.127-2.565%207.483-.085%2015.175-.02%2023.015.229%207.834.248%2015.51.67%2022.968%201.25%2014.92%201.156%2028.998%202.957%2041.703%205.435%206.104%201.186%2011.931%202.505%2017.35%204.046%205.42%201.541%2010.433%203.303%2014.965%205.263%204.145%201.79%207.906%203.808%2011.06%206.11%201.442%201.044%202.772%202.171%203.92%203.37%201.146%201.199%202.11%202.469%202.864%203.785a13.434%2013.434%200%200%201%201.512%203.986c.295%201.494.276%202.914.074%204.176a14.011%2014.011%200%200%201-1.3%203.977%2016.406%2016.406%200%200%201-1.587%202.577c-.977%201.305-1.626%201.855-1.732%201.773-.106-.082.333-.802%201.064-2.196a22.47%2022.47%200%200%200%201.191-2.616c.393-1.05.749-2.284.853-3.7a10.664%2010.664%200%200%200-.315-3.59c-.293-1.107-.799-2.24-1.502-3.34-.713-1.123-1.625-2.201-2.717-3.229-1.092-1.027-2.363-2.005-3.75-2.943-3.044-2.044-6.684-3.82-10.755-5.44-4.459-1.771-9.383-3.354-14.721-4.736-5.338-1.383-11.09-2.564-17.15-3.648-12.586-2.244-26.524-3.873-41.336-4.949a561.489%20561.489%200%200%200-22.791-1.181%20602.786%20602.786%200%200%200-22.847-.285c-16.088.1-31.21.836-44.806%202.057-7.56.68-14.646%201.492-21.154%202.44-6.509.95-12.44%202.035-17.714%203.176-4.53.984-8.59%201.971-12.085%202.975a106.17%20106.17%200%200%200-8.788%202.925c-2.358.907-4.145%201.7-5.364%202.228-1.22.527-1.876.783-1.938.677z'/%3E%3C/svg%3E " width="80" height="23" alt="HastyScribe"> </a></p>
@@ -10,7 +10,7 @@ content-type: project
active: true ci: true download: "https://github.com/h3rald/min/releases/download/" -version: 0.44.0 +version: 0.45.0 docs: /min/Min_DeveloperGuide.htm -----