Commit 473943a6 authored by Gautham Velchuru's avatar Gautham Velchuru
Browse files

no more studying

parent 650cbd99
\begin{Verbatim}[commandchars=\\\{\}]
\PYG{k}{def} \PYG{n+nf}{number}
\PYG{l+m+mi}{2}
\PYG{k}{end}
\PYG{n+nb}{puts} \PYG{n}{number}
\end{Verbatim}
......@@ -9,7 +9,7 @@
\PYG{k+kr}{else} \PYG{n}{first}
\PYG{c+c1}{\PYGZhy{}\PYGZhy{} or}
\PYG{n}{eval\PYGZus{}args}\PYG{p}{(}\PYG{n}{x}\PYG{k+kt}{:}\PYG{n}{xs}\PYG{p}{)} \PYG{n}{env} \PYG{o+ow}{=}
\PYG{o}{|} \PYG{n}{first} \PYG{o}{==} \PYG{k+kt}{OctoBool} \PYG{k+kt}{False} \PYG{o+ow}{\PYGZhy{}\PYGZgt{}} \PYG{n}{eval\PYGZus{}args} \PYG{n}{xs} \PYG{n}{env}
\PYG{o}{|} \PYG{n}{first} \PYG{o}{==} \PYG{k+kt}{OctoBool} \PYG{k+kt}{False} \PYG{o+ow}{=} \PYG{n}{eval\PYGZus{}args} \PYG{n}{xs} \PYG{n}{env}
\PYG{o}{|} \PYG{n}{otherwise} \PYG{n}{first}
\PYG{k+kr}{where} \PYG{n}{first} \PYG{o+ow}{=} \PYG{n}{eval} \PYG{n}{x} \PYG{n}{env}
\end{Verbatim}
......@@ -63,29 +63,23 @@
\@writefile{toc}{\contentsline {subsection}{\numberline {9.2}Static vs Dynamic Analysis}{18}}
\@writefile{toc}{\contentsline {subsection}{\numberline {9.3}Major programming language families}{18}}
\@writefile{toc}{\contentsline {subsection}{\numberline {9.4}Interaction of Languages and Style}{18}}
\@writefile{toc}{\contentsline {subsection}{\numberline {9.5}Objects and Encapsulation}{19}}
\@writefile{toc}{\contentsline {subsection}{\numberline {9.6}Purely Functional Languages vs State}{19}}
\@writefile{toc}{\contentsline {section}{\numberline {10}General Concepts}{19}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.1}Types}{19}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.1.1}Static vs Dynamic Typing}{19}}
\@writefile{toc}{\contentsline {subsection}{\numberline {9.5}Objects and Encapsulation}{18}}
\@writefile{toc}{\contentsline {subsection}{\numberline {9.6}Purely Functional Languages vs State}{18}}
\@writefile{toc}{\contentsline {section}{\numberline {10}General Concepts}{18}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.1}Types}{18}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.1.1}Static vs Dynamic Typing}{18}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.1.2}Type Safety}{19}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.1.3}Type Inference}{19}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.2}Strongly typed languages}{19}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.3}Polymorphism}{19}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.4}Functional vs Imperative}{20}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.5}Higher-order functions}{20}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.4}Functional vs Imperative}{19}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.5}Higher-order functions}{19}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.6}Parameter Passing}{20}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.6.1}Call-By-Value}{20}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.6.2}Call-by-reference}{20}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {10.6.3}Call-by-name}{20}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.7}Lazy evaluation/thunks}{20}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.8}Overloading}{21}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.9}Coercion}{21}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.10}Closures}{21}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.11}Equality vs Identity}{21}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.12}Compile time vs runtime}{21}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.13}Recursion}{21}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.14}Aliasing}{21}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.8}Overloading}{20}}
\gdef\minted@oldcachelist{,
default-pyg-prefix.pygstyle,
default.pygstyle,
......@@ -140,16 +134,21 @@
52139519543E28217844CBDFD7056C76F2CA81E7B26B3986E5291D03C014E77B.pygtex,
26FA8E00DDE53E88C945326F644BCADAF2CA81E7B26B3986E5291D03C014E77B.pygtex,
87BA332A2091250B02A456556DB5A659F2CA81E7B26B3986E5291D03C014E77B.pygtex,
72D37D2B01BA483F7A5BD40BD6BB278EF2CA81E7B26B3986E5291D03C014E77B.pygtex,
DD72BA94498323B6F0C365081FFC3112F2CA81E7B26B3986E5291D03C014E77B.pygtex,
F6F9C282D0607C1297F7BD79058D6E2B465A516120F3196FA8E2CA26C46A5C64.pygtex,
2EEB3A010C71E706DCBB719B2551C060465A516120F3196FA8E2CA26C46A5C64.pygtex,
F95EEB5DBC5CAC0C96CDFF57347261BB465A516120F3196FA8E2CA26C46A5C64.pygtex,
CEBB2E4153930A8AB1FA44928D66F94CA15C0CEA82421F045DAF380F7E860C2A.pygtex,
5B8FDFBCF96E776350835B2A51C36EEBF2CA81E7B26B3986E5291D03C014E77B.pygtex,
FF3902625C50950847A6A70A8600D59DF2CA81E7B26B3986E5291D03C014E77B.pygtex,
EE2D7538D96D4B5E2BC4B913B41FC366465A516120F3196FA8E2CA26C46A5C64.pygtex,
3B10F88D8DCED974CDD9946B53C2D9666CD81CFDCB5F0793F497D493F610EBFB.pygtex,
874C30DABB4D3006287318F54AA39D80465A516120F3196FA8E2CA26C46A5C64.pygtex,
75C03D82507A67BD7A35CA65A1C45809465A516120F3196FA8E2CA26C46A5C64.pygtex}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.15}Pointer stuff}{22}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.16}Type variance}{22}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.9}Coercion}{21}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.10}Closures}{21}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.11}Equality vs Identity}{21}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.12}Compile time vs runtime}{21}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.13}Recursion}{21}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.14}Aliasing}{21}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.15}Pointer stuff}{21}}
\@writefile{toc}{\contentsline {subsection}{\numberline {10.16}Type variance}{21}}
This diff is collapsed.
......@@ -425,10 +425,10 @@ INPUT _minted-all_study_guide/87BA332A2091250B02A456556DB5A659F2CA81E7B26B3986E5
INPUT _minted-all_study_guide/87BA332A2091250B02A456556DB5A659F2CA81E7B26B3986E5291D03C014E77B.pygtex
OUTPUT all_study_guide.pyg
INPUT ./all_study_guide.pyg
INPUT _minted-all_study_guide/72D37D2B01BA483F7A5BD40BD6BB278EF2CA81E7B26B3986E5291D03C014E77B.pygtex
INPUT _minted-all_study_guide/72D37D2B01BA483F7A5BD40BD6BB278EF2CA81E7B26B3986E5291D03C014E77B.pygtex
INPUT _minted-all_study_guide/72D37D2B01BA483F7A5BD40BD6BB278EF2CA81E7B26B3986E5291D03C014E77B.pygtex
INPUT _minted-all_study_guide/72D37D2B01BA483F7A5BD40BD6BB278EF2CA81E7B26B3986E5291D03C014E77B.pygtex
INPUT _minted-all_study_guide/DD72BA94498323B6F0C365081FFC3112F2CA81E7B26B3986E5291D03C014E77B.pygtex
INPUT _minted-all_study_guide/DD72BA94498323B6F0C365081FFC3112F2CA81E7B26B3986E5291D03C014E77B.pygtex
INPUT _minted-all_study_guide/DD72BA94498323B6F0C365081FFC3112F2CA81E7B26B3986E5291D03C014E77B.pygtex
INPUT _minted-all_study_guide/DD72BA94498323B6F0C365081FFC3112F2CA81E7B26B3986E5291D03C014E77B.pygtex
OUTPUT all_study_guide.pyg
INPUT ./all_study_guide.pyg
INPUT _minted-all_study_guide/F6F9C282D0607C1297F7BD79058D6E2B465A516120F3196FA8E2CA26C46A5C64.pygtex
......@@ -449,12 +449,6 @@ INPUT _minted-all_study_guide/F95EEB5DBC5CAC0C96CDFF57347261BB465A516120F3196FA8
INPUT _minted-all_study_guide/F95EEB5DBC5CAC0C96CDFF57347261BB465A516120F3196FA8E2CA26C46A5C64.pygtex
OUTPUT all_study_guide.pyg
INPUT ./all_study_guide.pyg
INPUT _minted-all_study_guide/CEBB2E4153930A8AB1FA44928D66F94CA15C0CEA82421F045DAF380F7E860C2A.pygtex
INPUT _minted-all_study_guide/CEBB2E4153930A8AB1FA44928D66F94CA15C0CEA82421F045DAF380F7E860C2A.pygtex
INPUT _minted-all_study_guide/CEBB2E4153930A8AB1FA44928D66F94CA15C0CEA82421F045DAF380F7E860C2A.pygtex
INPUT _minted-all_study_guide/CEBB2E4153930A8AB1FA44928D66F94CA15C0CEA82421F045DAF380F7E860C2A.pygtex
OUTPUT all_study_guide.pyg
INPUT ./all_study_guide.pyg
INPUT _minted-all_study_guide/5B8FDFBCF96E776350835B2A51C36EEBF2CA81E7B26B3986E5291D03C014E77B.pygtex
INPUT _minted-all_study_guide/5B8FDFBCF96E776350835B2A51C36EEBF2CA81E7B26B3986E5291D03C014E77B.pygtex
INPUT _minted-all_study_guide/5B8FDFBCF96E776350835B2A51C36EEBF2CA81E7B26B3986E5291D03C014E77B.pygtex
......
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Arch Linux) (preloaded format=pdflatex 2018.5.5) 5 JUN 2018 09:41
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Arch Linux) (preloaded format=pdflatex 2018.3.16) 6 JUN 2018 18:10
entering extended mode
\write18 enabled.
file:line:error style messages enabled.
......@@ -1001,7 +1001,7 @@ Underfull \hbox (badness 10000) in paragraph at lines 473--475
(./_minted-all_study_guide/87BA332A2091250B02A456556DB5A659F2CA81E7B26B3986E5291D03C014E77B.pygtex) [15]
\openout3 = `all_study_guide.pyg'.
(./_minted-all_study_guide/72D37D2B01BA483F7A5BD40BD6BB278EF2CA81E7B26B3986E5291D03C014E77B.pygtex)
(./_minted-all_study_guide/DD72BA94498323B6F0C365081FFC3112F2CA81E7B26B3986E5291D03C014E77B.pygtex)
\openout3 = `all_study_guide.pyg'.
(./_minted-all_study_guide/F6F9C282D0607C1297F7BD79058D6E2B465A516120F3196FA8E2CA26C46A5C64.pygtex [16])
......@@ -1013,75 +1013,73 @@ Underfull \hbox (badness 10000) in paragraph at lines 473--475
(./_minted-all_study_guide/F95EEB5DBC5CAC0C96CDFF57347261BB465A516120F3196FA8E2CA26C46A5C64.pygtex) [17]
\openout3 = `all_study_guide.pyg'.
(./_minted-all_study_guide/CEBB2E4153930A8AB1FA44928D66F94CA15C0CEA82421F045DAF380F7E860C2A.pygtex)
\openout3 = `all_study_guide.pyg'.
(./_minted-all_study_guide/5B8FDFBCF96E776350835B2A51C36EEBF2CA81E7B26B3986E5291D03C014E77B.pygtex)
\openout5 = `all_study_guide.pyg'.
(./_minted-all_study_guide/FF3902625C50950847A6A70A8600D59DF2CA81E7B26B3986E5291D03C014E77B.pygtex) [18]
\openout3 = `all_study_guide.pyg'.
(./_minted-all_study_guide/EE2D7538D96D4B5E2BC4B913B41FC366465A516120F3196FA8E2CA26C46A5C64.pygtex) [19]
Overfull \hbox (5.08403pt too wide) in paragraph at lines 684--687
(./_minted-all_study_guide/EE2D7538D96D4B5E2BC4B913B41FC366465A516120F3196FA8E2CA26C46A5C64.pygtex)
Overfull \hbox (5.08403pt too wide) in paragraph at lines 685--688
\OT1/cmr/m/n/10 Call-by-value means that ev-ery-thing is copied upon en-ter-ing a func-tion.Languages
[]
[19]
\openout3 = `all_study_guide.pyg'.
(./_minted-all_study_guide/3B10F88D8DCED974CDD9946B53C2D9666CD81CFDCB5F0793F497D493F610EBFB.pygtex)
(./_minted-all_study_guide/3B10F88D8DCED974CDD9946B53C2D9666CD81CFDCB5F0793F497D493F610EBFB.pygtex)
\openout3 = `all_study_guide.pyg'.
(./_minted-all_study_guide/874C30DABB4D3006287318F54AA39D80465A516120F3196FA8E2CA26C46A5C64.pygtex [20]) [21]
(./_minted-all_study_guide/874C30DABB4D3006287318F54AA39D80465A516120F3196FA8E2CA26C46A5C64.pygtex) [20]
\openout3 = `all_study_guide.pyg'.
(./_minted-all_study_guide/75C03D82507A67BD7A35CA65A1C45809465A516120F3196FA8E2CA26C46A5C64.pygtex)
./all_study_guide.tex:764: Package csquotes Error: Unbalanced groups or invalid nesting.
./all_study_guide.tex:765: Package csquotes Error: Unbalanced groups or invalid nesting.
See the csquotes package documentation for explanation.
Type H <return> for immediate help.
...
l.764 \end{document}
l.765 \end{document}
Still 1 quote open. If you continue, I will write a summary
of all previously opened groups to the transcript file.
### semi simple group (level 1) entered at line 684 (\begingroup)
### semi simple group (level 1) entered at line 685 (\begingroup)
### bottom level
./all_study_guide.tex:764: OK.
./all_study_guide.tex:765: OK.
\csq@err@gleft ...the transcript file}\showgroups
l.764 \end{document}
l.765 \end{document}
[22] (./all_study_guide.aux)
[21] (./all_study_guide.aux)
runsystem(rm all_study_guide.pyg)...executed.
)
(\end occurred inside a group at level 1)
### semi simple group (level 1) entered at line 684 (\begingroup)
### semi simple group (level 1) entered at line 685 (\begingroup)
### bottom level
(\end occurred when \ifx on line 287 was incomplete)
(\end occurred when \ifx on line 225 was incomplete)
(\end occurred when \ifx on line 166 was incomplete)
Here is how much of TeX's memory you used:
7514 strings out of 492982
138163 string characters out of 6138580
248677 words of memory out of 5000000
10807 multiletter control sequences out of 15000+600000
7510 strings out of 492982
137822 string characters out of 6138579
249772 words of memory out of 5000000
10806 multiletter control sequences out of 15000+600000
6175 words of font info for 23 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
37i,7n,35p,857b,581s stack positions out of 5000i,500n,10000p,200000b,80000s
{/usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-ts1.enc}</usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmitt10.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1000.pfb>
Output written on all_study_guide.pdf (22 pages, 161165 bytes).
Output written on all_study_guide.pdf (21 pages, 160623 bytes).
PDF statistics:
112 PDF objects out of 1000 (max. 8388607)
78 compressed objects within 1 object stream
109 PDF objects out of 1000 (max. 8388607)
76 compressed objects within 1 object stream
0 named destinations out of 1000 (max. 500000)
1 words of extra memory for PDF output out of 10000 (max. 10000000)
No preview for this file type
......@@ -555,7 +555,7 @@ Like let() in Racket, Haskell lets you scope variables using let and where, as i
else first
-- or
eval_args(x:xs) env =
| first == OctoBool False -> eval_args xs env
| first == OctoBool False = eval_args xs env
| otherwise first
where first = eval x env
\end{minted}
......@@ -567,7 +567,7 @@ Like let() in Racket, Haskell lets you scope variables using let and where, as i
\subsection{Generics, subtyping, etc}
\subsubsection{Arrays}
Array typing was created before the rest of the Generics thing, so it does not check properly at compile time - it considers all Arrays as Arrays of Object. However,
Array typing was created before the rest of the Generics thing, so it does not check properly at compile time -- it considers all Arrays as Arrays of Object. However,
Java has runtime handlers to prevent incorrect array storing. The following code compiles but does not run:
\begin{minted} {java}
import java.awt.Point;
......@@ -624,16 +624,17 @@ Like let() in Racket, Haskell lets you scope variables using let and where, as i
\subsection{Scope}
The two types of scope are lexical and dynamic scoping. Lexical scoping is scoping where variables are only defined in a lexical block. However,
dynamic scoping involves searching up the stack for the relevant variable definition, such as in the Ruby below:
\begin{minted}{ruby}
def number
2
end
puts number
\end{minted}
This, in Ruby, will print 5. In any language with lexical scoping, it will not work. Also, essentially every major language uses dynamic scoping
for exception handling - it looks up the stack until it finds a relevant exception handler.
%\begin{minted}{ruby}
%number = 3
%def hi
%number = 5
%end
%puts number
%\end{minted}
%This, in Ruby, will print 5. In any language with lexical scoping, it will not work. Also, essentially every major language uses dynamic scoping
%for exception handling - it looks up the stack until it finds a relevant exception handler.
\subsection{Static vs Dynamic Analysis}
Static analyis is analysis done at runtime - checking for bugs, malicious code, etc. Dynamic analysis is done at execution time. Depending on the nature
Static analyis is analysis done at compile time - checking for bugs, malicious code, etc. Dynamic analysis is done at execution time. Depending on the nature
of the language, more or less static analysis can be done -- it all depends on how much the compiler knows.
\subsection{Major programming language families}
%TODO: WRite this
......
......@@ -62,28 +62,28 @@
\contentsline {subsection}{\numberline {9.2}Static vs Dynamic Analysis}{18}
\contentsline {subsection}{\numberline {9.3}Major programming language families}{18}
\contentsline {subsection}{\numberline {9.4}Interaction of Languages and Style}{18}
\contentsline {subsection}{\numberline {9.5}Objects and Encapsulation}{19}
\contentsline {subsection}{\numberline {9.6}Purely Functional Languages vs State}{19}
\contentsline {section}{\numberline {10}General Concepts}{19}
\contentsline {subsection}{\numberline {10.1}Types}{19}
\contentsline {subsubsection}{\numberline {10.1.1}Static vs Dynamic Typing}{19}
\contentsline {subsection}{\numberline {9.5}Objects and Encapsulation}{18}
\contentsline {subsection}{\numberline {9.6}Purely Functional Languages vs State}{18}
\contentsline {section}{\numberline {10}General Concepts}{18}
\contentsline {subsection}{\numberline {10.1}Types}{18}
\contentsline {subsubsection}{\numberline {10.1.1}Static vs Dynamic Typing}{18}
\contentsline {subsubsection}{\numberline {10.1.2}Type Safety}{19}
\contentsline {subsubsection}{\numberline {10.1.3}Type Inference}{19}
\contentsline {subsection}{\numberline {10.2}Strongly typed languages}{19}
\contentsline {subsection}{\numberline {10.3}Polymorphism}{19}
\contentsline {subsection}{\numberline {10.4}Functional vs Imperative}{20}
\contentsline {subsection}{\numberline {10.5}Higher-order functions}{20}
\contentsline {subsection}{\numberline {10.4}Functional vs Imperative}{19}
\contentsline {subsection}{\numberline {10.5}Higher-order functions}{19}
\contentsline {subsection}{\numberline {10.6}Parameter Passing}{20}
\contentsline {subsubsection}{\numberline {10.6.1}Call-By-Value}{20}
\contentsline {subsubsection}{\numberline {10.6.2}Call-by-reference}{20}
\contentsline {subsubsection}{\numberline {10.6.3}Call-by-name}{20}
\contentsline {subsection}{\numberline {10.7}Lazy evaluation/thunks}{20}
\contentsline {subsection}{\numberline {10.8}Overloading}{21}
\contentsline {subsection}{\numberline {10.8}Overloading}{20}
\contentsline {subsection}{\numberline {10.9}Coercion}{21}
\contentsline {subsection}{\numberline {10.10}Closures}{21}
\contentsline {subsection}{\numberline {10.11}Equality vs Identity}{21}
\contentsline {subsection}{\numberline {10.12}Compile time vs runtime}{21}
\contentsline {subsection}{\numberline {10.13}Recursion}{21}
\contentsline {subsection}{\numberline {10.14}Aliasing}{21}
\contentsline {subsection}{\numberline {10.15}Pointer stuff}{22}
\contentsline {subsection}{\numberline {10.16}Type variance}{22}
\contentsline {subsection}{\numberline {10.15}Pointer stuff}{21}
\contentsline {subsection}{\numberline {10.16}Type variance}{21}
......@@ -4,3 +4,9 @@ my_max([X|Xs], R) :- my_max(Xs, X, R).
my_max([], R, R).
my_max([X|Xs], WK, R) :- {X > WK}, my_max(Xs, X, R).
my_max([X|Xs], WK, R) :- {X =< WK}, my_max(Xs, WK, R).
max([], 0).
max([X|Xs], M) :- findmax(Xs, X), M is X.
findmax([], M).
findmax([X|Xs], M) :- {X>M}, findmax(Xs, X), M is X.
findmax([X|Xs], M) :- {X =< M}, findmax(Xs, M).
......@@ -18,3 +18,12 @@ READ THE QUESTION - especially when talking about mutation vs making a new thing
Ruby - protected allows you to call from other classes of same type, use when necessary
Also, delete from a hash by doing .delete
To yield the value of the block itself, just call yield (emulating and)
Object's superclass is nil
check edge cases, N>0 in repeat
num is the most general type for haskal
remember syntax-rules() for macros
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment