{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Classo numero quatro" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Some small remarks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Note on immutability" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1 2 3 4 5 6 7 8]" ] } ], "source": [ "(def lst [1 2 3 4 5 6 7 8])\n", "\n", "(defn times-2 [n]\n", " (* 2 n))\n", "\n", "(def lst-2 (map times-2 lst))\n", "(print lst)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Note on lazyness" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0 2 4 6 8 10 12 14 16 18)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def all-numbers (range))\n", "(def all-even-numbers (map times-2 all-numbers))\n", "(take 10 all-even-numbers)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Note on comments" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "(def persen {:name \"steph\"}) ;:age 34\n", "(def foo 2) ;; this is a comment. We call it a \"line comment\"\n", "\n", "(comment (println \"This is what we call a block comment, rarely used\"))\n", "\n", "\n", "#_(println \"This is another type of block comment, more often used. (used by david nolen)\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Hyperfiddle\n", "\n", "This is the coolest thing ever! http://www.hyperfiddle.net/" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### `if` and `when`\n", "\n", "Sometime, we only want to do \"stuff\" when something happen. This is moment to use `if` and `when`" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "99 is odd\n" ] } ], "source": [ "(defn print-odd-or-even [n]\n", " (if (odd? n)\n", " (println n \" is odd\")\n", " (println n \" is even\")))\n", "\n", "(defn custom-hello [gender]\n", " (if (= gender :male)\n", " \"his\"\n", " (if (= gender :female)\n", " \"her\"\n", " \"hex\")))\n", "\n", "(defn custom-hello-2 [gender]\n", " (when (= gender :male)\n", " (println \"his\")))\n", " \n", "\n", "\n", "(print-odd-or-even 99)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Doing a web page!\n", "\n", "* Intro html tags...\n", "* Let's do some html trash course\n", "* https://www.w3schools.com/TAGS/tryit.asp?filename=tryhtml_headers\n", "* https://www.w3schools.com/html/tryit.asp?filename=tryhtml_table_intro\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ ";; the bellow line \"imports\" the functions required to display html\n", ";; in the jupyter notebook\n", "(require '[clojupyter.misc.display :as display]) ;; https://github.com/clojupyter/clojupyter" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "

We can very easely print stuff from code

" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(display/html \"

We can very easely print stuff from code

\") " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "borris\" title \"hiccup is much better" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ ";; Hiccup is THE way to create html content from clojure\n", "(display/hiccup-html [:h3 \"hiccup is much better\"])" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "

ok

" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(defn hiccup-h1 [title]\n", " [:h1 title])\n", "(display/hiccup-html (hiccup-h1 \"ok\"))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dodgeball data" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "#'user/dodgeball-data" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def dodgeball-data\n", " [{:team-1 :drummonville :team-2 :montreal :points-1 4 :points-2 5}\n", " {:team-1 :quebec :team-2 :montreal :points-1 12 :points-2 2}\n", " {:team-1 :gatineau :team-2 :montreal :points-1 7 :points-2 5}\n", " {:team-1 :amos :team-2 :montreal :points-1 1 :points-2 12}])\n", " \n", " \n", " " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
VilleResultatVilleResultat
drummonville4montreal5
quebec12montreal2
gatineau7montreal5
amos1montreal12
" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(def bold {:style \"font-weight: bold;\"})\n", "(def not-bold nil)\n", "\n", "(defn team-1-style [game]\n", " (if (> (game :points-1) (game :points-2))\n", " bold\n", " not-bold))\n", "\n", "(defn team-2-style [game]\n", " (if (< (game :points-1) (game :points-2))\n", " bold\n", " not-bold))\n", "\n", "\n", "\n", "(defn create-row [game]\n", " [:tr [:td (team-1-style game ) (:team-1 game)]\n", " [:td (:points-1 game)]\n", " [:td (team-2-style game ) (:team-2 game)]\n", " [:td (:points-2 game)]])\n", "\n", "(defn summary-table [games]\n", " [:table\n", " [:thead\n", " [:tr [:td \"Ville\"]\n", " [:td \"Resultat\"]\n", " [:td \"Ville\"]\n", " [:td \"Resultat\"]]]\n", " (map create-row games)])\n", "\n", "(display/hiccup-html (summary-table dodgeball-data))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Lein-Clojure", "language": "clojure", "name": "lein-clojure" }, "language_info": { "file_extension": ".clj", "mimetype": "text/x-clojure", "name": "clojure", "version": "1.9.0" } }, "nbformat": 4, "nbformat_minor": 2 }