diff options
author | EuAndreh <eu@euandre.org> | 2023-04-05 16:14:00 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2023-04-05 16:14:00 -0300 |
commit | 24e24b49fb6375189cfa527a113eb965087a293a (patch) | |
tree | fc75f8267a22f6473432ee6b07c4013561c303dc /v2/src/content/en | |
parent | v2: Recove h[2-6] anchor link and icon (diff) | |
download | euandre.org-24e24b49fb6375189cfa527a113eb965087a293a.tar.gz euandre.org-24e24b49fb6375189cfa527a113eb965087a293a.tar.xz |
v2: Support Atom feeds and collection translations
Diffstat (limited to 'v2/src/content/en')
-rw-r--r-- | v2/src/content/en/about.md | 11 | ||||
-rw-r--r-- | v2/src/content/en/pastebins/raku-tuple-type-annotation.md | 31 | ||||
-rw-r--r-- | v2/src/content/en/pastebins/sicp-exercise-3-19.md | 107 | ||||
-rw-r--r-- | v2/src/content/en/tils/lisp-three-way-conditional.md | 57 |
4 files changed, 206 insertions, 0 deletions
diff --git a/v2/src/content/en/about.md b/v2/src/content/en/about.md new file mode 100644 index 0000000..1e39407 --- /dev/null +++ b/v2/src/content/en/about.md @@ -0,0 +1,11 @@ +--- + +title: About + +--- + +It's all about me, baby! + +``` +xablau +``` diff --git a/v2/src/content/en/pastebins/raku-tuple-type-annotation.md b/v2/src/content/en/pastebins/raku-tuple-type-annotation.md new file mode 100644 index 0000000..5877470 --- /dev/null +++ b/v2/src/content/en/pastebins/raku-tuple-type-annotation.md @@ -0,0 +1,31 @@ +--- + +title: Raku tuple type annotation + +date: 2019-12-29 + +--- + +```perl +# Single Str return value: this works +sub f1(Str $in --> Str) { + $in; +} + +# Tuple of Str as return value: this works +sub f2(Str $in) { + ($in, $in); +} + +# Tuple of Str as return value with type annotation: this doesn't works +sub f2(Str $in --> (Str, Str)) { + ($in, $in); +} +``` + +Error log is: + +```perl +===SORRY!=== Error while compiling /path/to/my/file +Malformed return value +``` diff --git a/v2/src/content/en/pastebins/sicp-exercise-3-19.md b/v2/src/content/en/pastebins/sicp-exercise-3-19.md new file mode 100644 index 0000000..3188dce --- /dev/null +++ b/v2/src/content/en/pastebins/sicp-exercise-3-19.md @@ -0,0 +1,107 @@ +--- + +title: SICP exercise 3.19 + +date: 2021-09-02 + +--- + +Some content here, before: + +```scheme +(define (cycle? l) + (define (rec l x) + (cond + ((null? x) false) + ((eq? l x) true) + (true (rec l (cdr x))))) + (rec l (cdr l))) +``` + +Sample interactive session: + +```scheme +scheme@(guile-user)> (define true #t) +scheme@(guile-user)> (define false #f) +scheme@(guile-user)> +(define (cycle? l) + (define (rec l x) + (cond + ((null? x) false) + ((eq? l x) true) + (true (rec l (cdr x))))) + (rec l (cdr l))) +scheme@(guile-user)> (cycle? '(1 2 3)) +$9 = #f +scheme@(guile-user)> (cycle? (make-cycle '(1 2 3))) +$10 = #t +``` + +# An h1 + +a list: + +1. one +2. two +3. three + +some content. + +- item +- another +- yet another + +## An h2 + +Xablau: + +``` +xupliu 1 + +3 +4 + + + + + +dez +``` + +Foi `wikiwiu`. + +a very long code block: + +``` +wef +wef wef wef wef +wef wef wef wef we fwef wef wef wef wef +``` + +Someone said: + +> Xablau, xupliu. + +### A repeated header +### A repeated header + +a big list: + +1. a +1. a +1. a +1. a +1. a +1. a +1. a +1. a +1. a +1. a +1. a +1. a +1. a +1. a +1. a +1. a +1. a +1. a diff --git a/v2/src/content/en/tils/lisp-three-way-conditional.md b/v2/src/content/en/tils/lisp-three-way-conditional.md new file mode 100644 index 0000000..cd7a034 --- /dev/null +++ b/v2/src/content/en/tils/lisp-three-way-conditional.md @@ -0,0 +1,57 @@ +--- + +title: Three-way conditional for number signs on Lisp + +date: 2021-04-24 3 + +update: 2021-08-14 + +--- + +A useful macro from Paul Graham's [On Lisp][on-lisp] book: + +```lisp +(defmacro nif (expr pos zero neg) + (let ((g (gensym))) + `(let ((,g ,expr)) + (cond ((plusp ,g) ,pos) + ((zerop ,g) ,zero) + (t ,neg))))) +``` + +After I looked at this macro, I started seeing opportunities to using it in many places, and yet I didn't see anyone else using it. + +The latest example I can think of is section 1.3.3 of [Structure and Interpretation of Computer Programs][sicp], which I was reading recently: + +```scheme +(define (search f neg-point pos-point) + (let ((midpoint (average neg-point pos-point))) + (if (close-enough? neg-point post-point) + midpoint + (let ((test-value (f midpoint))) + (cond ((positive? test-value) + (search f neg-point midpoint)) + ((negative? test-value) + (search f midpoint pos-point)) + (else midpoint)))))) +``` + +Not that the book should introduce such macro this early, but I couldn't avoid feeling bothered by not using the `nif` macro, which could even remove the need for the intermediate `test-value` variable: + +```scheme +(define (search f neg-point pos-point) + (let ((midpoint (average neg-point pos-point))) + (if (close-enough? neg-point post-point) + midpoint + (nif (f midpoint) + (search f neg-point midpoint) + (midpoint) + (search f midpoint pos-point))))) +``` + +It also avoids `cond`'s extra clunky parentheses for grouping, which is unnecessary but built-in. + +As a macro, I personally feel it tilts the balance towards expressivenes despite its extra cognitive load toll. + +[on-lisp]: http://www.paulgraham.com/onlisptext.html +[sicp]: https://mitpress.mit.edu/sites/default/files/sicp/index.html |