Fixed many script + a bit of intro
This commit is contained in:
parent
f774b17dec
commit
0a79dcf412
5 changed files with 55 additions and 40 deletions
|
@ -2,6 +2,10 @@
|
||||||
|
|
||||||
TODO: write something nice after reading.
|
TODO: write something nice after reading.
|
||||||
|
|
||||||
|
The B in Benoît B. Mandelbrot stand fro Benoît B. Mandelbrot
|
||||||
|
|
||||||
|
[^1]: [Source on reddit](http://www.reddit.com/r/math/comments/uirv8/are_math_jokes_okay_here_i_just_came_up_with_one/c4vr2zo)
|
||||||
|
|
||||||
Steps:
|
Steps:
|
||||||
|
|
||||||
1. Mandelbrot set with Haskell OpenGL
|
1. Mandelbrot set with Haskell OpenGL
|
||||||
|
|
|
@ -1,16 +1,20 @@
|
||||||
## First version
|
## First version
|
||||||
|
|
||||||
We can consider two parts.
|
We can consider two parts.
|
||||||
The first being mostly some boilerplate.
|
The first being mostly some boilerplate[^1].
|
||||||
Generally in Haskell you need to declare a lot of import lines.
|
|
||||||
This is something I find annoying.
|
|
||||||
In particular, it should be possible to create a special file, Import.hs
|
|
||||||
which make all the necessary import for you, as you generally need them all.
|
|
||||||
I understand why this is cleaner to force the programmer not to do so, but, each time I do a copy/paste, I feel something is wrong.
|
|
||||||
The second part, contain more interesting stuff.
|
The second part, contain more interesting stuff.
|
||||||
Even in this part, there are some necessary boilerplate.
|
Even in this part, there are some necessary boilerplate.
|
||||||
But it is due to the OpenGL library this time.
|
But it is due to the OpenGL library this time.
|
||||||
|
|
||||||
|
|
||||||
|
[^1]: Generally in Haskell you need to declare a lot of import lines.
|
||||||
|
This is something I find annoying.
|
||||||
|
In particular, it should be possible to create a special file, Import.hs
|
||||||
|
which make all the necessary import for you, as you generally need them all.
|
||||||
|
I understand why this is cleaner to force the programmer not to do so,
|
||||||
|
but, each time I do a copy/paste, I feel something is wrong.
|
||||||
|
I believe this concern can be generalized to the lack of namespace in Haskell.
|
||||||
|
|
||||||
### Let's play the song of our people
|
### Let's play the song of our people
|
||||||
|
|
||||||
> import Graphics.Rendering.OpenGL
|
> import Graphics.Rendering.OpenGL
|
||||||
|
@ -140,10 +144,10 @@ Given two coordinates in pixels, it returns some integer value:
|
||||||
> in
|
> in
|
||||||
> f (complex r i) 0 64
|
> f (complex r i) 0 64
|
||||||
|
|
||||||
It uses the main mandelbrot function for each complex $c$.
|
It uses the main mandelbrot function for each complex \\(c\\).
|
||||||
The mandelbrot set is the set of complex number c such that the following sequence does not escape to infinity.
|
The mandelbrot set is the set of complex number c such that the following sequence does not escape to infinity.
|
||||||
|
|
||||||
Let us define $f_c: \mathbb{C} \to \mathbb{C}$
|
Let us define \\(f_c: \mathbb{C} \to \mathbb{C}\\)
|
||||||
|
|
||||||
$$ f_c(z) = z^2 + c $$
|
$$ f_c(z) = z^2 + c $$
|
||||||
|
|
||||||
|
|
25
config.ymd
Executable file
25
config.ymd
Executable file
|
@ -0,0 +1,25 @@
|
||||||
|
-----
|
||||||
|
isHidden: false
|
||||||
|
menupriority: 1
|
||||||
|
kind: article
|
||||||
|
created_at: 2012-04-30T19:17:53+02:00
|
||||||
|
en: title: Haskell Working Program
|
||||||
|
en: subtitle: An OpenGL 3D extension of the Mandelbrot set
|
||||||
|
fr: title: Un programme Haskell fonctionnel
|
||||||
|
fr: subtitle: Une extension de l'ensemble de Mandelbrot en 3D et en OpenGL
|
||||||
|
author_name: Yann Esposito
|
||||||
|
author_uri: yannesposito.com
|
||||||
|
tags:
|
||||||
|
- Haskell
|
||||||
|
- programming
|
||||||
|
- functional
|
||||||
|
- tutorial
|
||||||
|
-----
|
||||||
|
blogimage("HGL_Plan.png","The plan in image")
|
||||||
|
|
||||||
|
begindiv(intro)
|
||||||
|
|
||||||
|
en: %tldr A progressive real world example.
|
||||||
|
fr: %tlal Un exemple progressif de programmation avec Haskell.
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#!/usr/bin/env zsh
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
function writeTOC() {
|
function writeTOC() {
|
||||||
# Create the TOC
|
|
||||||
cat <<END
|
cat <<END
|
||||||
> <center><hr style="width:30%;float:left;border-color:#CCCCD0;margin-top:1em"/><span class="sc"><b>Table of Content</b></span><hr style="width:30%;float:right;border-color:#CCCCD0;margin-top:1em"/></center>
|
> <center><hr style="width:30%;float:left;border-color:#CCCCD0;margin-top:1em"/><span class="sc"><b>Table of Content</b></span><hr style="width:30%;float:right;border-color:#CCCCD0;margin-top:1em"/></center>
|
||||||
>
|
>
|
||||||
|
@ -12,34 +12,7 @@ END
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cat config.ymd
|
||||||
|
|
||||||
cat <<END
|
|
||||||
-----
|
|
||||||
isHidden: false
|
|
||||||
menupriority: 1
|
|
||||||
kind: article
|
|
||||||
created_at: 2012-04-30T19:17:53+02:00
|
|
||||||
en: title: Haskell OpenGL Mandelbrot
|
|
||||||
en: subtitle: A kind of real world example
|
|
||||||
fr: title: Afficher mandelbrot en OpenGL avec Haskell
|
|
||||||
fr: subtitle: Un exemple d'utilisation d'Haskell
|
|
||||||
author_name: Yann Esposito
|
|
||||||
author_uri: yannesposito.com
|
|
||||||
tags:
|
|
||||||
- Haskell
|
|
||||||
- programming
|
|
||||||
- functional
|
|
||||||
- tutorial
|
|
||||||
-----
|
|
||||||
blogimage("mandelbrot_3D.png","3D Mandelbrot Set")
|
|
||||||
|
|
||||||
begindiv(intro)
|
|
||||||
|
|
||||||
en: %tldr A progressive real world example.
|
|
||||||
fr: %tlal Un exemple progressif de programmation avec Haskell.
|
|
||||||
|
|
||||||
END
|
|
||||||
|
|
||||||
writeTOC
|
writeTOC
|
||||||
|
|
||||||
|
@ -49,7 +22,6 @@ enddiv
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
for fic in **/*.lhs(.N); do
|
for fic in **/*.lhs(.N); do
|
||||||
contains_haskell=$(( $( egrep '^>' $fic | wc -l) > 0 ))
|
contains_haskell=$(( $( egrep '^>' $fic | wc -l) > 0 ))
|
||||||
((contains_haskell)) && \
|
((contains_haskell)) && \
|
||||||
|
|
14
prev
14
prev
|
@ -2,12 +2,22 @@
|
||||||
|
|
||||||
webroot="$HOME/Sites/webroot"
|
webroot="$HOME/Sites/webroot"
|
||||||
|
|
||||||
|
print -- "Search script"
|
||||||
|
while [[ ! -x ./create_ymd.sh ]]; do
|
||||||
|
[[ $PWD = "/" ]] && {
|
||||||
|
print -- "Error: can't find create_ymd.sh" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
cd ..
|
||||||
|
done
|
||||||
|
|
||||||
print -- "Create article"
|
print -- "Create article"
|
||||||
./create_ymd.sh > $webroot/latest.ymd
|
./create_ymd.sh > $webroot/latest.ymd
|
||||||
|
|
||||||
print -- "Copy sources"
|
print -- "Copy source codes"
|
||||||
|
latestArticleDir=$(ls -l $webroot/latest.ymd | perl -pi -e 's#.*/##; s#.md$##')
|
||||||
for langue in en fr; do
|
for langue in en fr; do
|
||||||
dst="$webroot/output/Scratch/$langue/blog/Haskell-OpenGL-Mandelbrot/code"
|
dst="$webroot/output/Scratch/$langue/blog/$latestArticleDir/code"
|
||||||
[[ ! -d $dst ]] && mkdir -p $dst
|
[[ ! -d $dst ]] && mkdir -p $dst
|
||||||
cp -r *.lhs ??_*(N/) $dst
|
cp -r *.lhs ??_*(N/) $dst
|
||||||
done
|
done
|
||||||
|
|
Loading…
Reference in a new issue