source code of my personal website
luthenwald.github.io/
ssg
1<!DOCTYPE html>
2<html lang="en" data-theme="light">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>tag: effect-system</title>
7 <link rel="stylesheet" href="../styles/reset.css">
8 <link rel="stylesheet" href="../styles/prima.css">
9</head>
10<body class="tag-page">
11 <aside class="outline-sidebar">
12 <div class="spacer"></div>
13 <nav class="bottom-nav">
14 <a href="../index.html">Home</a>
15 <a href="tagcloud.html">Tags</a>
16 <a href="../feed.xml">Feed</a>
17 <a href="#" id="theme-toggle" title="toggle theme">Theme</a>
18 </nav>
19 </aside>
20 <main class="main-content">
21 <h1>tag: effect-system</h1>
22 <article class="blog-entry">
23 <h2><a href="../blogs/effect-kleisli.html">Effect is Kleisli, etymologically</a></h2>
24 <div class="date">2025-11-26</div>
25 <div class="description">It's pretty intriguing that the Effect type in this blog is exactly the traditional Kleisli type in haskell. We'll further show that Monad is the constraint we need to form the valid Effect category. If you are wondering about the meaning of effects in the haskell world, I believe this blog will help gain some understanding.</div>
26 <div class="tags"><a href="../tags/effect-system.html">effect-system</a>, <a href="../tags/haskell.html">haskell</a>, <a href="../tags/monad.html">monad</a>, <a href="../tags/2025.html">2025</a></div>
27 </article>
28 </main>
29 <script>
30 document.addEventListener('DOMContentLoaded', function() {
31 const themeToggle = document.getElementById('theme-toggle');
32 const html = document.documentElement;
33 const savedTheme = localStorage.getItem('theme') || 'light';
34 html.setAttribute('data-theme', savedTheme);
35 themeToggle.addEventListener('click', function(e) {
36 e.preventDefault();
37 const currentTheme = html.getAttribute('data-theme');
38 const newTheme = currentTheme === 'light' ? 'dark' : 'light';
39 html.setAttribute('data-theme', newTheme);
40 localStorage.setItem('theme', newTheme);
41 });
42 });
43 </script>
44</body>
45</html>