commit 19c046c9aa4bbbb7eb56884f0a6b40404d5114d0
parent 36b37633da983e5927ca8bc087e6c8ee7c267cbf
Author: Andrew Laack <andrew@laack.co>
Date: Sun, 30 Aug 2026 16:11:20 -0500
Better styling
Diffstat:
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/courses/ocaml/1.2_the_present_of_ocaml.sl b/courses/ocaml/1.2_the_present_of_ocaml.sl
@@ -24,11 +24,11 @@ Some languages, like Python and Racket, are type-safe but *dynamically typed*. T
OCaml supports a number of advanced features, some of which you will have encountered before, and some of which are likely to be new:
-- **Algebraic data types:** You can build sophisticated data structures in OCaml easily, without fussing with pointers and memory management. *Pattern matching*—a feature we'll soon learn about that enables examining the shape of a data structure—makes them even more convenient.
-- **Type inference:** You do not have to write type information down everywhere. The compiler automatically figures out most types. This can make the code easier to read and maintain.
-- **Parametric polymorphism:** Functions and data structures can be parameterized over types. This is crucial for being able to re-use code.
-- **Garbage collection:** Automatic memory management relieves you from the burden of memory allocation and deallocation, a common source of bugs in languages such as C.
-- **Modules:** OCaml makes it easy to structure large systems through the use of modules. Modules are used to encapsulate implementations behind interfaces. OCaml goes well beyond the functionality of most languages with modules by providing functions (called *functors*) that manipulate modules.
+* **Algebraic data types:** You can build sophisticated data structures in OCaml easily, without fussing with pointers and memory management. *Pattern matching*—a feature we'll soon learn about that enables examining the shape of a data structure—makes them even more convenient.
+* **Type inference:** You do not have to write type information down everywhere. The compiler automatically figures out most types. This can make the code easier to read and maintain.
+* **Parametric polymorphism:** Functions and data structures can be parameterized over types. This is crucial for being able to re-use code.
+* **Garbage collection:** Automatic memory management relieves you from the burden of memory allocation and deallocation, a common source of bugs in languages such as C.
+* **Modules:** OCaml makes it easy to structure large systems through the use of modules. Modules are used to encapsulate implementations behind interfaces. OCaml goes well beyond the functionality of most languages with modules by providing functions (called *functors*) that manipulate modules.
## OCaml in Industry
diff --git a/learning/templates/course_page.jingoo b/learning/templates/course_page.jingoo
@@ -7,9 +7,9 @@
{% else if line.line_type == "ListItem"%}
<li>{{line.content}}</li>
{% else if line.line_type == "Link"%}
- <div/>
- <a href="{{line.content}}">{{line.content}}</a>
- <div/>
+ <content-block>
+ <a href="{{line.content}}">{{line.content}}</a>
+ </content-block>
{% else if line.line_type == "Hidden"%}
<details>
<summary>{{line.content}}</summary>