3 <link rel=
"stylesheet" href=
"https://csshake.surge.sh/csshake.min.css">
4 <link href=
"https://fonts.googleapis.com/css?family=Press+Start+2P&display=swap" rel=
"stylesheet">
6 href=
"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/styles/default.min.css">
7 <script src=
"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/highlight.min.js"></script>
8 <script>hljs.initHighlightingOnLoad();
</script>
9 <title>Crazy Wide-Eyed Functional Programming
</title>
13 font-family: 'Press Start
2P', cursive;
17 background-color: #f98012;
18 background-image: url(
"img/tile.png");
19 background-repeat: repeat;
21 image-rendering: crisp-edges;
22 background-position-x: -
33px;
23 background-blend-mode: multiply;
27 font-family: 'Press Start
2P', cursive;
28 text-shadow:
2px
2px
0 #
000;
36 text-shadow:
10px
10px
0 #
00000069;
42 justify-content: center;
46 box-shadow:
10px
10px
0 #
00000069;
50 background-image: url(
"img/tile-nopad-bottom.png");
51 background-blend-mode: multiply;
53 background-repeat: repeat-x;
54 background-position-x: center;
55 background-position-y: center;
64 image-rendering: optimizeSpeed; /* STOP SMOOTHING, GIVE ME SPEED */
65 image-rendering: -moz-crisp-edges; /* Firefox */
66 image-rendering: -o-crisp-edges; /* Opera */
67 image-rendering: -webkit-optimize-contrast; /* Chrome (and eventually Safari) */
68 image-rendering: pixelated; /* Chrome */
69 image-rendering: optimize-contrast; /* CSS3 Proposed */
70 -ms-interpolation-mode: nearest-neighbor; /* IE8+ */
73 #slide-
1 .shake-constant, .crazy, .span {
74 display: inline-block;
77 #slide-
1 .shake-opacity {
87 box-shadow:
10px
10px
0 #
00000069;
88 border:
2px solid black;
89 background-color: #
3f6382;
96 span[class^=
"code-friends"].on {
103 <div class=
"slide-title">=<< What's up with that Title?
>>=
</div>
105 <div style=
"justify-content: right;">
106 <img class=
"shake-constant shake" src=
"img/wide-eyed-crazy.png" style=
"width: 70%; margin-right: 10%;">
108 <div style=
"justify-content: left">
109 <div style=
"display: flex; align-items: center; width: 70%">
110 <div id=
"rant" class=
"textbox" style=
"display: block;height: auto; width:100%; margin-left:10%;">
111 <span class=
"crazy">It’s functions,
</span><span class=
"shake-constant shake-opacity">pure
</span><span class=
"crazy"> functions! Pure functions and their values, PURE FUNCTIONS FOREVER AND FOREVER AND FOREVER A HUNDRED YEARS
</span><span class=
"shake-constant shake-opacity">monad
</span><span class=
"crazy">... some... things... Me and
</span><span class=
"shake-constant shake-opacity">monads
</span><span class=
"crazy"> runnin' around and...
</span><span class=
"shake-constant shake-opacity">applicative functor
</span><span class=
"crazy"> time... a- all day long forever... All a - a hundred days
</span><span class=
"shake-constant shake-opacity">applicatives
</span><span class=
"crazy"> and
</span><span class=
"shake-constant shake-opacity">functors
</span><span class=
"crazy">! Forever a hundred times.... OVER and over
</span><span class=
"shake-constant shake-opacity">monad transformers
</span><span class=
"crazy">... adventures dot com... W W W dot at
</span><span class=
"shake-constant shake-opacity">lambda calculus
</span><span class=
"crazy"> and
</span><span class=
"shake-constant shake-opacity">category theory
</span><span class=
"crazy"> dot com w..w..w... function composition adventures... Ah- hundred years… Every minute
</span><span class=
"shake-constant shake-opacity">referential… transparency
</span><span class=
"crazy"> dot com.... w w w a hundred times...
</span><span class=
"shake-constant shake-opacity">composition
</span><span class=
"crazy"> dot com...
</span>
115 <div>Fig
1.1 What most people thing a typical functional programming advocate looks like
</div>
119 <div class=
"slide-title">=<< Obligatory Quote
>>=
</div>
124 <div class=
"slide-title">=<< Obligatory Quote
>>=
</div>
126 <div style=
"text-align:center; font-size:40px; text-shadow: 4px 4px #000;" >If you wish to build a ship, do not divide the men into teams and send them to the forest to cut wood. Instead, teach them to long for the vast and endless sea.
</div>
130 <div class=
"slide-title">=<< The Third Slide
>>=
</div>
132 <pre><code class=
"javascript textbox">Promise.resolve(
"We start here")
133 <span class=
"code-friends1" onmouseenter=
"activateFriends(1);" onmouseleave=
"deactivateFriends(1);" style=
"display: inline-block">.then
</span>(x =
> Promise.resolve(x +
" then get here"))
134 .then(x =
> Promise.resolve(x +
" and finally here!"))
</code></pre>
135 <pre><code class=
"haskell textbox">Right(
"We start here")
136 <span class=
"code-friends1" onmouseenter=
"activateFriends(1);" onmouseleave=
"deactivateFriends(1);" style=
"display: inline-block">>>=
</span> (\x -
> Right (x ++
" then get here"))
137 >>= (\x -
> Right (x ++
" and finally here!"))
</code></pre>
143 var div, i, j, span, duration =
"";
146 div = document.querySelectorAll(
"#rant > span.crazy");
147 for (j =
0; j < div.length; j++) {
149 for (i =
0; i < div[j].innerText.length; i++) {
150 duration = Math.floor(Math.random() *
5) +
100
151 span +=
"<span class=\"letter shake-constant shake-little\" style=\"animation-duration: " + duration +
"ms\">";
152 span += div[j].innerText[i] ==
" " ?
" " : div[j].innerText[i];
155 crazyTexts.push(span);
158 opacities = document.querySelectorAll(
"#rant > span.shake-opacity");
159 for (k =
0; k < opacities.length; k++) {
161 opacities[k].style.animationDuration = shrek + 's';
162 opacyTexts.push(opacities[k].outerHTML);
166 for (l =
0; l< crazyTexts.length; l++) {
167 allText+=crazyTexts[l] +
" " + (opacyTexts[l] ? opacyTexts[l] :
"") +
" ";
170 document.getElementById('rant').innerHTML = allText;
174 var b = document.querySelectorAll('body')[
0];
175 setInterval(function(){
178 b.style.backgroundPosition = x + 'px ' + y + 'px';
181 var currentSlide =
0;
182 document.onkeydown = checkKey;
184 function checkKey(e) {
186 e = e || window.event;
187 if (e.keyCode == '
37') {
188 if (document.getElementById('slide-' + currentSlide)) {
189 document.getElementById('slide-' + currentSlide).style.display = 'none';
192 document.getElementById('slide-' + currentSlide).style.display = 'block';
194 else if (e.keyCode == '
39') {
195 if (document.getElementById('slide-' + currentSlide)) {
196 document.getElementById('slide-' + currentSlide).style.display = 'none';
199 document.getElementById('slide-' + currentSlide).style.display = 'block';
204 function activateFriends(n) {
205 f = document.querySelectorAll('.code-friends' + n);
206 f[
0].classList.add(
"shake-constant");
207 f[
0].classList.add(
"shake-slow");
208 f[
0].classList.add(
"on");
209 f[
1].classList.add(
"shake-constant");
210 f[
1].classList.add(
"shake-slow");
211 f[
1].classList.add(
"on");
214 function deactivateFriends(n) {
215 f = document.querySelectorAll('.code-friends' + n);
216 f[
0].classList.remove(
"shake-constant");
217 f[
0].classList.remove(
"shake-slow");
218 f[
0].classList.remove(
"on");
219 f[
1].classList.remove(
"shake-constant");
220 f[
1].classList.remove(
"shake-slow");
221 f[
1].classList.remove(
"on");