Initial commit
This commit is contained in:
commit
f9192b4398
3 changed files with 77 additions and 0 deletions
24
README.md
Normal file
24
README.md
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# Interactive Programming
|
||||||
|
|
||||||
|
Le but de ce dépôt est de prendre l'habitude de pratiquer "l'interactive programming"
|
||||||
|
avec Scheme.
|
||||||
|
|
||||||
|
Le fichier shell.nix contient :
|
||||||
|
- Chez Scheme
|
||||||
|
- Emacs
|
||||||
|
- Geiser
|
||||||
|
|
||||||
|
Pour commencer rapidement :
|
||||||
|
|
||||||
|
```
|
||||||
|
emacs -nw album.ss
|
||||||
|
```
|
||||||
|
|
||||||
|
Ensuite quelques raccourcis pratiques :
|
||||||
|
|
||||||
|
```
|
||||||
|
C-x C-s - Sauvegarder
|
||||||
|
C-x k - Fermer le buffer
|
||||||
|
C-c C-c - Evaluer la définition sous le curseur
|
||||||
|
C-c C-z - Ouvrir le REPL
|
||||||
|
```
|
44
album.ss
Normal file
44
album.ss
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
(define (flatten l)
|
||||||
|
(cond
|
||||||
|
((not (list? l)) l)
|
||||||
|
((null? l) '())
|
||||||
|
((list? (car l)) (append (flatten (car l)) (flatten (cdr l))))
|
||||||
|
(#t (cons (car l) (flatten (cdr l))))))
|
||||||
|
|
||||||
|
|
||||||
|
(define (tree path)
|
||||||
|
(cond
|
||||||
|
((file-directory? path)
|
||||||
|
(map (lambda (item) (tree (string-append path "/" item))) (directory-list path)))
|
||||||
|
(#t path)))
|
||||||
|
|
||||||
|
(define (string-suffix s n)
|
||||||
|
(let ([strlen (string-length s)])
|
||||||
|
(substring s (- strlen n) strlen)))
|
||||||
|
|
||||||
|
(define (pictures path)
|
||||||
|
(sort
|
||||||
|
string<=?
|
||||||
|
(filter
|
||||||
|
(lambda (filename) (string=? ".JPG" (string-suffix filename 4)))
|
||||||
|
(flatten (tree path)))))
|
||||||
|
|
||||||
|
|
||||||
|
(define (albumize path)
|
||||||
|
`(html ()
|
||||||
|
(head ()
|
||||||
|
(meta (charset "utf-8"))
|
||||||
|
(style () "
|
||||||
|
img {
|
||||||
|
display:block;
|
||||||
|
max-width: 100%;
|
||||||
|
margin: auto;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
"))
|
||||||
|
(body ()
|
||||||
|
,(map (lambda (filename) `(img (src ,filename))) (pictures path)))))
|
||||||
|
|
||||||
|
;(define (sexpr->html
|
||||||
|
|
||||||
|
|
9
shell.nix
Normal file
9
shell.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ pkgs ? import <nixpkgs> {} }:
|
||||||
|
|
||||||
|
pkgs.mkShell {
|
||||||
|
nativeBuildInputs = [
|
||||||
|
((pkgs.emacsPackagesFor pkgs.emacs).emacsWithPackages
|
||||||
|
(epkgs: [ pkgs.emacs28Packages.geiser-chez ]))
|
||||||
|
pkgs.chez
|
||||||
|
];
|
||||||
|
}
|
Loading…
Reference in a new issue