@@ -15,132 +15,74 @@ \section{Basic Usage}\label{basic-usage}}
1515
1616We can use all Idris 2 features. Here's an example code block:
1717
18- \let\KatlaSnippet\relax {}\newcommand \KatlaSnippet [1][]{\UseVerbatim [#1]{KatlaSnippet}}
19- \begin {SaveVerbatim }[commandchars=\\ \{\} ]{KatlaSnippet}
20- \IdrisFunction {x}\KatlaSpace {}\IdrisKeyword {:}\KatlaSpace {}\IdrisType {Nat}\KatlaNewline {}
21- \IdrisFunction {x}\KatlaSpace {}\IdrisKeyword {=}\KatlaSpace {}\IdrisData {1}\KatlaSpace {}\IdrisFunction {+}\KatlaSpace {}\IdrisData {2}\KatlaNewline {}
22- \end {SaveVerbatim }
2318\KatlaSnippet {}
2419
20+ And here's a code block in a \LaTeX {} figure environment:
21+
22+ \newcommand \myfig [2]{
23+ \begin {figure }[h]
24+ \centering
25+ #2
26+ \caption {#1}
27+ \end {figure }
28+ }
29+
30+ \myfig {Definition of $ y$ }{
31+
32+ \KatlaSnippet {}
33+
34+ }
35+
2536We can use namespaces by adding the \texttt {namespace } attribute, such
2637as to provide alternate definitions for functions. Consider this
2738function signature:
2839
29- \let\KatlaSnippet\relax {}\newcommand \KatlaSnippet [1][]{\UseVerbatim [#1]{KatlaSnippet}}
30- \begin {SaveVerbatim }[commandchars=\\ \{\} ]{KatlaSnippet}
31- \IdrisFunction {f}\KatlaSpace {}\IdrisKeyword {:}\KatlaSpace {}\IdrisType {Vect}\KatlaSpace {}\IdrisBound {n}\KatlaSpace {}\IdrisBound {a}\KatlaSpace {}\IdrisKeyword {\KatlaDash {}>}\KatlaSpace {}\IdrisType {Vect}\KatlaSpace {}\IdrisKeyword {(}\IdrisBound {n}\KatlaSpace {}\IdrisFunction {+}\KatlaSpace {}\IdrisBound {n}\IdrisKeyword {)}\KatlaSpace {}\IdrisBound {a}\KatlaNewline {}
32- \end {SaveVerbatim }
3340\KatlaSnippet {}
3441
35- Here's one implementation for
36- \let\KatlaSnippet\relax {}\newcommand \KatlaSnippet [1][]{\UseVerb [#1]{KatlaSnippet}}
37- \begin {SaveVerbatim }[commandchars=\\ \{\} ]{KatlaSnippet}
38- \IdrisFunction {f}\KatlaNewline {}
39- \end {SaveVerbatim }
40- \KatlaSnippet {}:
41-
42- \let\KatlaSnippet\relax {}\newcommand \KatlaSnippet [1][]{\UseVerbatim [#1]{KatlaSnippet}}
43- \begin {SaveVerbatim }[commandchars=\\ \{\} ]{KatlaSnippet}
44- \IdrisFunction {f}\KatlaSpace {}\IdrisBound {xs}\KatlaSpace {}\IdrisKeyword {=}\KatlaSpace {}\IdrisBound {xs}\KatlaSpace {}\IdrisFunction {++}\KatlaSpace {}\IdrisBound {xs}\KatlaNewline {}
45- \end {SaveVerbatim }
42+ Here's one implementation for \KatlaSnippet {}:
43+
4644\KatlaSnippet {}
4745
4846By repeating the signature in a different namespace, in a hidden code
4947block, I can give an alternate definition:
5048
51- \let\KatlaSnippet\relax {}\newcommand \KatlaSnippet [1][]{\UseVerbatim [#1]{KatlaSnippet}}
52- \begin {SaveVerbatim }[commandchars=\\ \{\} ]{KatlaSnippet}
53- \IdrisFunction {f}\KatlaSpace {}\IdrisBound {xs}\KatlaSpace {}\IdrisKeyword {=}\KatlaSpace {}\IdrisBound {xs}\KatlaSpace {}\IdrisFunction {++}\KatlaSpace {}\IdrisFunction {reverse}\KatlaSpace {}\IdrisBound {xs}\KatlaNewline {}
54- \end {SaveVerbatim }
5549\KatlaSnippet {}
5650
5751\hypertarget {inline-code}{%
5852\section {Inline Code }\label {inline-code }}
5953
6054As well as block code, we can have inline code, like
61- \let\KatlaSnippet\relax {}\newcommand \KatlaSnippet [1][]{\UseVerb [#1]{KatlaSnippet}}
62- \begin {SaveVerbatim }[commandchars=\\ \{\} ]{KatlaSnippet}
63- \IdrisFunction {the}\KatlaSpace {}\IdrisType {Nat}\KatlaSpace {}\IdrisData {3}\KatlaNewline {}
64- \end {SaveVerbatim }
65- \KatlaSnippet {}. Here's another:
66- \let\KatlaSnippet\relax {}\newcommand \KatlaSnippet [1][]{\UseVerb [#1]{KatlaSnippet}}
67- \begin {SaveVerbatim }[commandchars=\\ \{\} ]{KatlaSnippet}
68- \IdrisData {1}\KatlaSpace {}\IdrisFunction {+}\KatlaSpace {}\IdrisData {2}\KatlaNewline {}
69- \end {SaveVerbatim }
70- \KatlaSnippet {}. We can also call the function we previously defined:
71- \let\KatlaSnippet\relax {}\newcommand \KatlaSnippet [1][]{\UseVerb [#1]{KatlaSnippet}}
72- \begin {SaveVerbatim }[commandchars=\\ \{\} ]{KatlaSnippet}
73- \IdrisFunction {f}\KatlaSpace {}\IdrisData {[1,}\KatlaSpace {}\IdrisData {2,}\KatlaSpace {}\IdrisData {3]}\KatlaNewline {}
74- \end {SaveVerbatim }
75- \KatlaSnippet {}.
55+ \KatlaSnippet {}. Here's another: \KatlaSnippet {}. We can
56+ also call the function we previously defined: \KatlaSnippet {}.
7657
7758By default, a code block is interpreted as top-level Idris 2
7859declarations, while inline code is interpreted as an expression. But we
7960can switch it up if we wish.
8061
8162By using the \texttt {decls } class, we can write an inline declaration:
82- \let\KatlaSnippet\relax {}\newcommand \KatlaSnippet [1][]{\UseVerb [#1]{KatlaSnippet}}
83- \begin {SaveVerbatim }[commandchars=\\ \{\} ]{KatlaSnippet}
84- \IdrisFunction {g}\KatlaSpace {}\IdrisKeyword {:}\KatlaSpace {}\IdrisType {Nat}\KatlaSpace {}\IdrisKeyword {\KatlaDash {}>}\KatlaSpace {}\IdrisType {Nat}\KatlaNewline {}
85- \end {SaveVerbatim }
8663\KatlaSnippet {}.
8764
8865By using the \texttt {expr } class, we can write a block expression:
8966
90- \let\KatlaSnippet\relax {}\newcommand \KatlaSnippet [1][]{\UseVerbatim [#1]{KatlaSnippet}}
91- \begin {SaveVerbatim }[commandchars=\\ \{\} ]{KatlaSnippet}
92- \IdrisData {[}\KatlaNewline {}
93- \KatlaSpace {}\KatlaSpace {}\KatlaSpace {}\KatlaSpace {}\IdrisData {1,}\KatlaNewline {}
94- \KatlaSpace {}\KatlaSpace {}\KatlaSpace {}\KatlaSpace {}\IdrisData {2,}\KatlaNewline {}
95- \KatlaSpace {}\KatlaSpace {}\KatlaSpace {}\KatlaSpace {}\IdrisData {3}\KatlaNewline {}
96- \IdrisData {]}\KatlaNewline {}
97- \end {SaveVerbatim }
9867\KatlaSnippet {}
9968
10069\hypertarget {types}{%
10170\section {Types }\label {types }}
10271
10372Sometimes, Idris 2 cannot infer the type of an expression. Is
104- \let\KatlaSnippet\relax {}\newcommand \KatlaSnippet [1][]{\UseVerb [#1]{KatlaSnippet}}
105- \begin {SaveVerbatim }[commandchars=\\ \{\} ]{KatlaSnippet}
106- \IdrisData {[1,}\KatlaSpace {}\IdrisData {2,}\KatlaSpace {}\IdrisData {3]}\KatlaNewline {}
107- \end {SaveVerbatim }
108- \KatlaSnippet {} a
109- \let\KatlaSnippet\relax {}\newcommand \KatlaSnippet [1][]{\UseVerb [#1]{KatlaSnippet}}
110- \begin {SaveVerbatim }[commandchars=\\ \{\} ]{KatlaSnippet}
111- \IdrisType {List}\KatlaSpace {}\IdrisType {Nat}\KatlaNewline {}
112- \end {SaveVerbatim }
113- \KatlaSnippet {}, or a
114- \let\KatlaSnippet\relax {}\newcommand \KatlaSnippet [1][]{\UseVerb [#1]{KatlaSnippet}}
115- \begin {SaveVerbatim }[commandchars=\\ \{\} ]{KatlaSnippet}
116- \IdrisType {Vect}\KatlaSpace {}\IdrisData {3}\KatlaSpace {}\IdrisType {Integer}\KatlaNewline {}
117- \end {SaveVerbatim }
118- \KatlaSnippet {}? We can use the \texttt {type } attribute to tell Idris 2
119- which one it should be.
73+ \KatlaSnippet {} a \KatlaSnippet {}, or a
74+ \KatlaSnippet {}? We can use the \texttt {type } attribute to tell
75+ Idris 2 which one it should be.
12076
12177\hypertarget {multiple-files}{%
12278\section {Multiple Files }\label {multiple-files }}
12379
12480If you need an import to \emph {not } be available, namespaces are not
12581enough. We can use the \texttt {file } attribute to put snippets in
126- separate files. For example, the signature of
127- \let\KatlaSnippet\relax {}\newcommand \KatlaSnippet [1][]{\UseVerb [#1]{KatlaSnippet}}
128- \begin {SaveVerbatim }[commandchars=\\ \{\} ]{KatlaSnippet}
129- \IdrisFunction {f}\KatlaNewline {}
130- \end {SaveVerbatim }
131- \KatlaSnippet {} fails to compile if we use a new file, that hasn't
132- imported
133- \let\KatlaSnippet\relax {}\newcommand \KatlaSnippet [1][]{\UseVerb [#1]{KatlaSnippet}}
134- \begin {SaveVerbatim }[commandchars=\\ \{\} ]{KatlaSnippet}
135- \IdrisType {Vect}\KatlaNewline {}
136- \end {SaveVerbatim }
82+ separate files. For example, the signature of \KatlaSnippet {}
83+ fails to compile if we use a new file, that hasn't imported
13784\KatlaSnippet {}.
13885
139- \let\KatlaSnippet\relax {}\newcommand \KatlaSnippet [1][]{\UseVerbatim [#1]{KatlaSnippet}}
140- \begin {SaveVerbatim }[commandchars=\\ \{\} ]{KatlaSnippet}
141- \IdrisKeyword {failing}\KatlaSpace {}\IdrisData {"Undefined\KatlaSpace {}name\KatlaSpace {}Vect."}\KatlaNewline {}
142- \KatlaSpace {}\KatlaSpace {}\KatlaSpace {}\KatlaSpace {}\IdrisFunction {f}\KatlaSpace {}\IdrisKeyword {:}\KatlaSpace {}Vect\KatlaSpace {}n\KatlaSpace {}a\KatlaSpace {}\IdrisKeyword {\KatlaDash {}>}\KatlaSpace {}Vect\KatlaSpace {}\IdrisKeyword {(}n\KatlaSpace {}+\KatlaSpace {}n\IdrisKeyword {)}\KatlaSpace {}a\KatlaNewline {}
143- \end {SaveVerbatim }
14486\KatlaSnippet {}
14587
14688\hypertarget {packages}{%
@@ -150,11 +92,4 @@ \section{Packages}\label{packages}}
15092using the \texttt {idris2-packages } key. For example, adding
15193\texttt {contrib } allows us to use the \texttt {Language.JSON } module.
15294
153- \let\KatlaSnippet\relax {}\newcommand \KatlaSnippet [1][]{\UseVerbatim [#1]{KatlaSnippet}}
154- \begin {SaveVerbatim }[commandchars=\\ \{\} ]{KatlaSnippet}
155- \IdrisKeyword {import}\KatlaSpace {}\IdrisModule {Language.JSON}\KatlaNewline {}
156- \KatlaNewline {}
157- \IdrisFunction {x}\KatlaSpace {}\IdrisKeyword {:}\KatlaSpace {}\IdrisType {Maybe}\KatlaSpace {}\IdrisType {JSON}\KatlaNewline {}
158- \IdrisFunction {x}\KatlaSpace {}\IdrisKeyword {=}\KatlaSpace {}\IdrisFunction {parse}\KatlaSpace {}\IdrisData {\# "\{ "x":\KatlaSpace {}1,\KatlaSpace {}"y":\KatlaSpace {}2\} "\# }\KatlaNewline {}
159- \end {SaveVerbatim }
16095\KatlaSnippet {}
0 commit comments