File size: 26,003 Bytes
105a065
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Lisp 方言大比拼:谁最好用?</title>
    <!-- 引入 FontAwesome 图标库 -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    
    <style>
        /* 
         * 全局变量定义 
         * 使用 CSS 变量方便统一管理主题颜色
         */
        :root {
            --bg-color: #0f172a;
            --card-bg: #1e293b;
            --text-main: #f1f5f9;
            --text-muted: #94a3b8;
            --accent-primary: #3b82f6;
            --accent-secondary: #8b5cf6;
            --border-color: #334155;
            
            /* 方言主题色 */
            --cl-color: #ef4444; /* Common Lisp - Red */
            --clojure-color: #5eead4; /* Clojure - Teal */
            --scheme-color: #f59e0b; /* Scheme - Amber */
            --elisp-color: #d946ef; /* Emacs Lisp - Fuchsia */
            
            --spacing-sm: 0.5rem;
            --spacing-md: 1rem;
            --spacing-lg: 2rem;
            --radius: 12px;
            --shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
            --shadow-hover: 0 20px 25px -5px rgba(0, 0, 0, 0.2), 0 10px 10px -5px rgba(0, 0, 0, 0.1);
        }

        /* 
         * 基础重置与排版 
         */
        * {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
        }

        body {
            font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
            background-color: var(--bg-color);
            color: var(--text-main);
            line-height: 1.6;
            overflow-x: hidden;
        }

        a {
            text-decoration: none;
            color: inherit;
            transition: color 0.3s ease;
        }

        /* 
         * 布局容器 
         */
        .container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 0 var(--spacing-md);
        }

        /* 
         * Header / 导航栏 
         */
        header {
            background-color: rgba(15, 23, 42, 0.9);
            backdrop-filter: blur(10px);
            border-bottom: 1px solid var(--border-color);
            position: sticky;
            top: 0;
            z-index: 100;
            padding: var(--spacing-md) 0;
        }

        .header-content {
            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        .logo {
            font-size: 1.5rem;
            font-weight: 700;
            background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            display: flex;
            align-items: center;
            gap: 0.5rem;
        }

        .anycoder-link {
            font-size: 0.875rem;
            color: var(--text-muted);
            border: 1px solid var(--border-color);
            padding: 0.25rem 0.75rem;
            border-radius: 20px;
            transition: all 0.3s ease;
        }

        .anycoder-link:hover {
            color: var(--text-main);
            border-color: var(--accent-primary);
            background-color: rgba(59, 130, 246, 0.1);
        }

        /* 
         * Hero Section 
         */
        .hero {
            text-align: center;
            padding: 5rem 0 3rem;
        }

        .hero h1 {
            font-size: 3rem;
            margin-bottom: var(--spacing-md);
            line-height: 1.2;
        }

        .hero p {
            font-size: 1.25rem;
            color: var(--text-muted);
            max-width: 700px;
            margin: 0 auto var(--spacing-lg);
        }

        .highlight {
            color: var(--accent-primary);
            font-weight: bold;
        }

        /* 
         * 方言卡片网格 
         */
        .dialect-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: var(--spacing-lg);
            padding-bottom: 5rem;
        }

        /* 
         * 卡片组件样式 
         */
        .card {
            background-color: var(--card-bg);
            border-radius: var(--radius);
            border: 1px solid var(--border-color);
            overflow: hidden;
            transition: transform 0.3s ease, box-shadow 0.3s ease;
            display: flex;
            flex-direction: column;
            position: relative;
        }

        .card:hover {
            transform: translateY(-5px);
            box-shadow: var(--shadow-hover);
            border-color: var(--accent-primary);
        }

        .card-header {
            padding: var(--spacing-lg);
            border-bottom: 1px solid var(--border-color);
            display: flex;
            justify-content: space-between;
            align-items: center;
        }

        .card-title {
            font-size: 1.5rem;
            font-weight: 700;
            display: flex;
            align-items: center;
            gap: 0.5rem;
        }

        .card-badge {
            font-size: 0.75rem;
            padding: 0.25rem 0.5rem;
            border-radius: 4px;
            background-color: rgba(255, 255, 255, 0.1);
            font-weight: 600;
        }

        /* 
         * 标签页导航 
         */
        .card-tabs {
            display: flex;
            background-color: rgba(0, 0, 0, 0.2);
        }

        .tab-btn {
            flex: 1;
            padding: var(--spacing-sm);
            background: none;
            border: none;
            color: var(--text-muted);
            cursor: pointer;
            border-bottom: 2px solid transparent;
            transition: all 0.2s;
            font-size: 0.9rem;
        }

        .tab-btn:hover {
            color: var(--text-main);
            background-color: rgba(255, 255, 255, 0.05);
        }

        .tab-btn.active {
            color: var(--text-main);
            border-bottom-color: var(--accent-primary);
        }

        /* 
         * 标签页内容 
         */
        .card-body {
            padding: var(--spacing-lg);
            flex-grow: 1;
        }

        .tab-content {
            display: none;
            animation: fadeIn 0.3s ease;
        }

        .tab-content.active {
            display: block;
        }

        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(5px); }
            to { opacity: 1; transform: translateY(0); }
        }

        .feature-list {
            list-style: none;
        }

        .feature-list li {
            margin-bottom: 0.5rem;
            display: flex;
            align-items: flex-start;
            gap: 0.5rem;
            font-size: 0.95rem;
            color: var(--text-muted);
        }

        .feature-list i {
            margin-top: 4px;
            color: var(--accent-primary);
        }

        /* 代码块样式 */
        .code-block {
            background-color: #0d1117;
            padding: var(--spacing-md);
            border-radius: 6px;
            font-family: 'Fira Code', monospace;
            font-size: 0.85rem;
            color: #e6edf3;
            overflow-x: auto;
            border: 1px solid var(--border-color);
        }

        .code-keyword { color: #ff7b72; }
        .code-func { color: #d2a8ff; }
        .code-string { color: #a5d6ff; }
        .code-comment { color: #8b949e; font-style: italic; }

        /* 
         * 评分/结论区域 
         */
        .verdict-section {
            background-color: var(--card-bg);
            border-radius: var(--radius);
            padding: var(--spacing-lg);
            margin-bottom: 5rem;
            border: 1px solid var(--border-color);
        }

        .verdict-title {
            text-align: center;
            margin-bottom: var(--spacing-lg);
            font-size: 2rem;
        }

        .comparison-table {
            width: 100%;
            border-collapse: collapse;
        }

        .comparison-table th, .comparison-table td {
            text-align: left;
            padding: var(--spacing-md);
            border-bottom: 1px solid var(--border-color);
        }

        .comparison-table th {
            color: var(--text-muted);
            font-weight: 600;
            font-size: 0.9rem;
            text-transform: uppercase;
        }

        .comparison-table tr:last-child td {
            border-bottom: none;
        }

        /* 
         * Footer 
         */
        footer {
            text-align: center;
            padding: 2rem 0;
            border-top: 1px solid var(--border-color);
            color: var(--text-muted);
            font-size: 0.9rem;
        }

        /* 
         * 响应式调整 
         */
        @media (max-width: 768px) {
            .hero h1 {
                font-size: 2rem;
            }
            
            .comparison-table {
                display: block;
                overflow-x: auto;
                white-space: nowrap;
            }
        }
    </style>
</head>
<body>

    <!-- 顶部导航 -->
    <header>
        <div class="container header-content">
            <a href="#" class="logo">
                <i class="fa-solid fa-brackets-curly"></i> Lisp 战场
            </a>
            <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" class="anycoder-link">
                Built with anycoder <i class="fa-solid fa-arrow-up-right-from-square" style="font-size: 0.7em;"></i>
            </a>
        </div>
    </header>

    <main class="container">
        
        <!-- 英雄区域:标题与介绍 -->
        <section class="hero">
            <h1>现在 Lisp 方言中<br><span class="highlight">谁最好用?</span></h1>
            <p>
                Lisp 家族历史悠久,方言众多。没有绝对的“最好”,只有“最适合”。
                无论是追求工业级性能、现代并发体验,还是极简主义美学,这里都有你的选择。
            </p>
        </section>

        <!-- 方言对比卡片区域 -->
        <section class="dialect-grid">

            <!-- Common Lisp 卡片 -->
            <article class="card" style="--accent-primary: var(--cl-color);">
                <div class="card-header">
                    <div class="card-title" style="color: var(--cl-color);">
                        <i class="fa-solid fa-server"></i> Common Lisp
                    </div>
                    <span class="card-badge">工业标准</span>
                </div>
                <div class="card-tabs">
                    <button class="tab-btn active" onclick="switchTab(this, 'cl-overview')">简介</button>
                    <button class="tab-btn" onclick="switchTab(this, 'cl-code')">代码</button>
                    <button class="tab-btn" onclick="switchTab(this, 'cl-verdict')">评价</button>
                </div>
                <div class="card-body">
                    <div id="cl-overview" class="tab-content active">
                        <p style="margin-bottom: 1rem;">Common Lisp (CL) 是经过 ANSI 标准化的 Lisp 方言。它庞大、多范式,旨在成为通用的工业级语言。</p>
                        <ul class="feature-list">
                            <li><i class="fa-solid fa-check"></i> 编译速度快,性能接近 C++</li>
                            <li><i class="fa-solid fa-check"></i> 极其强大的宏系统</li>
                            <li><i class="fa-solid fa-check"></i> 丰富的内置库和面向对象系统 (CLOS)</li>
                        </ul>
                    </div>
                    <div id="cl-code" class="tab-content">
                        <div class="code-block">
<span class="code-comment">; 定义一个类和通用方法</span>
<span class="code-keyword">(defclass</span> dog () ((name :initarg :name :accessor dog-name)))
<span class="code-keyword">(defmethod</span> bark ((d dog))
  (<span class="code-func">format</span> t <span class="code-string">"~A says Woof!~%"</span> (dog-name d)))

<span class="code-comment">; 使用</span>
<span class="code-keyword">(let</span> ((my-dog (<span class="code-func">make-instance</span> 'dog :name <span class="code-string">"Spot"</span>)))
  (bark my-dog))
                        </div>
                    </div>
                    <div id="cl-verdict" class="tab-content">
                        <p><strong>适合人群:</strong> 需要构建复杂系统、追求极致性能和控制力的开发者。</p>
                        <p style="margin-top: 0.5rem; font-size: 0.9rem; color: var(--text-muted);">
                            它是 Lisp 世界的“重型坦克”,虽然上手曲线较陡,但一旦掌握,威力无穷。
                        </p>
                    </div>
                </div>
            </article>

            <!-- Clojure 卡片 -->
            <article class="card" style="--accent-primary: var(--clojure-color);">
                <div class="card-header">
                    <div class="card-title" style="color: var(--clojure-color);">
                        <i class="fa-solid fa-cube"></i> Clojure
                    </div>
                    <span class="card-badge">现代实用</span>
                </div>
                <div class="card-tabs">
                    <button class="tab-btn active" onclick="switchTab(this, 'clojure-overview')">简介</button>
                    <button class="tab-btn" onclick="switchTab(this, 'clojure-code')">代码</button>
                    <button class="tab-btn" onclick="switchTab(this, 'clojure-verdict')">评价</button>
                </div>
                <div class="card-body">
                    <div id="clojure-overview" class="tab-content active">
                        <p style="margin-bottom: 1rem;">运行在 JVM (Java 虚拟机) 上的现代 Lisp。它强调不可变性和函数式编程,解决了传统 Lisp 在并发处理上的痛点。</p>
                        <ul class="feature-list">
                            <li><i class="fa-solid fa-check"></i> 天生支持并发</li>
                            <li><i class="fa-solid fa-check"></i> 不可变数据结构</li>
                            <li><i class="fa-solid fa-check"></i> 可以无缝调用 Java 库</li>
                        </ul>
                    </div>
                    <div id="clojure-code" class="tab-content">
                        <div class="code-block">
<span class="code-comment">; 现代函数式风格</span>
<span class="code-keyword">(defn</span> process-data [data]
  (<span class="code-func">-></span> data
      (<span class="code-func">filter</span> odd?)
      (<span class="code-func">map</span> inc)
      (<span class="code-func">reduce</span> + 0)))

<span class="code-comment">; 调用</span>
(println (process-data [1 2 3 4 5]))
<span class="code-comment">; => 9 (2+4+6)</span>
                        </div>
                    </div>
                    <div id="clojure-verdict" class="tab-content">
                        <p><strong>适合人群:</strong> 后端开发者、大数据处理、以及在 Java 环境中寻求更简洁语言的人。</p>
                        <p style="margin-top: 0.5rem; font-size: 0.9rem; color: var(--text-muted);">
                            目前最流行的 Lisp 方言,就业机会最多,生态最活跃。
                        </p>
                    </div>
                </div>
            </article>

            <!-- Scheme / Racket 卡片 -->
            <article class="card" style="--accent-primary: var(--scheme-color);">
                <div class="card-header">
                    <div class="card-title" style="color: var(--scheme-color);">
                        <i class="fa-solid fa-graduation-cap"></i> Scheme / Racket
                    </div>
                    <span class="card-badge">极简主义</span>
                </div>
                <div class="card-tabs">
                    <button class="tab-btn active" onclick="switchTab(this, 'scheme-overview')">简介</button>
                    <button class="tab-btn" onclick="switchTab(this, 'scheme-code')">代码</button>
                    <button class="tab-btn" onclick="switchTab(this, 'scheme-verdict')">评价</button>
                </div>
                <div class="card-body">
                    <div id="scheme-overview" class="tab-content active">
                        <p style="margin-bottom: 1rem;">Scheme 以其极简的内核著称。Racket 是 Scheme 的一个现代衍生版,不仅是编程语言,更是创建编程语言的平台 (PLT)。</p>
                        <ul class="feature-list">
                            <li><i class="fa-solid fa-check"></i> 语法极其干净,正交性高</li>
                            <li><i class="fa-solid fa-check"></i> 宏系统卫生</li>
                            <li><i class="fa-solid fa-check"></i> 编程语言教育的首选</li>
                        </ul>
                    </div>
                    <div id="scheme-code" class="tab-content">
                        <div class="code-block">
<span class="code-comment">; 递归计算阶乘</span>
<span class="code-keyword">(define</span> (factorial n)
  (<span class="code-keyword">if</span> (= n 0)
      1
      (* n (factorial (- n 1)))))

<span class="code-comment">; 简单的列表操作</span>
<span class="code-keyword">(define</span> squares
  (<span class="code-func">map</span> (lambda (x) (* x x)) '(1 2 3 4)))
                        </div>
                    </div>
                    <div id="scheme-verdict" class="tab-content">
                        <p><strong>适合人群:</strong> 计算机科学学生、语言设计师、喜欢极简美学的人。</p>
                        <p style="margin-top: 0.5rem; font-size: 0.9rem; color: var(--text-muted);">
                            如果你想理解编程的本质,或者想快速发明一个 DSL,Racket 是最佳选择。
                        </p>
                    </div>
                </div>
            </article>

            <!-- Emacs Lisp 卡片 -->
            <article class="card" style="--accent-primary: var(--elisp-color);">
                <div class="card-header">
                    <div class="card-title" style="color: var(--elisp-color);">
                        <i class="fa-brands fa-linux"></i> Emacs Lisp
                    </div>
                    <span class="card-badge">编辑器之神</span>
                </div>
                <div class="card-tabs">
                    <button class="tab-btn active" onclick="switchTab(this, 'elisp-overview')">简介</button>
                    <button class="tab-btn" onclick="switchTab(this, 'elisp-code')">代码</button>
                    <button class="tab-btn" onclick="switchTab(this, 'elisp-verdict')">评价</button>
                </div>
                <div class="card-body">
                    <div id="elisp-overview" class="tab-content active">
                        <p style="margin-bottom: 1rem;">Emacs 编辑器的扩展语言。如果你是 Emacs 用户,Elisp 是你必须掌握的工具,它让编辑器变成了操作系统。</p>
                        <ul class="feature-list">
                            <li><i class="fa-solid fa-check"></i> 与 Emacs 编辑器深度集成</li>
                            <li><i class="fa-solid fa-check"></i> 交互式开发体验极强</li>
                            <li><i class="fa-solid fa-check"></i> 动态作用域 (默认)</li>
                        </ul>
                    </div>
                    <div id="elisp-code" class="tab-content">
                        <div class="code-block">
<span class="code-comment">; 定义一个简单的交互式函数</span>
<span class="code-keyword">(defun</span> insert-current-date ()
  <span class="code-string">"Insert current date at point."</span>
  (<span class="code-keyword">interactive</span>)
  (<span class="code-func">insert</span> (<span class="code-func">format-time-string</span> <span class="code-string">"%Y-%m-%d"</span>)))

<span class="code-comment">; 绑定快捷键</span>
(<span class="code-func">global-set-key</span> (kbd <span class="code-string">"C-c d"</span>) 'insert-current-date)
                        </div>
                    </div>
                    <div id="elisp-verdict" class="tab-content">
                        <p><strong>适合人群:</strong> 重度 Emacs 用户、想要定制自己编辑工作流的人。</p>
                        <p style="margin-top: 0.5rem; font-size: 0.9rem; color: var(--text-muted);">
                            它的用途非常垂直,但在那个领域它是不可替代的王者。
                        </p>
                    </div>
                </div>
            </article>

        </section>

        <!-- 总结对比表 -->
        <section class="verdict-section">
            <h2 class="verdict-title"><i class="fa-solid fa-scale-balanced"></i> 综合对比</h2>
            <div style="overflow-x: auto;">
                <table class="comparison-table">
                    <thead>
                        <tr>
                            <th>特性</th>
                            <th style="color: var(--cl-color);">Common Lisp</th>
                            <th style="color: var(--clojure-color);">Clojure</th>
                            <th style="color: var(--scheme-color);">Scheme/Racket</th>
                            <th style="color: var(--elisp-color);">Emacs Lisp</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td><strong>学习曲线</strong></td>
                            <td>中等偏难</td>
                            <td>中等</td>
                            <td>简单 (入门难精通)</td>
                            <td>中等 (需懂 Emacs)</td>
                        </tr>
                        <tr>
                            <td><strong>运行速度</strong></td>
                            <td><i class="fa-solid fa-rocket"></i> 极快</td>
                            <td>快 (JVM 优化)</td>
                            <td>中等</td>
                            <td>解释型,较慢</td>
                        </tr>
                        <tr>
                            <td><strong>并发能力</strong></td>
                            <td>依赖实现</td>
                            <td><i class="fa-solid fa-bolt"></i> 核心优势</td>
                            <td>支持良好 (Racket)</td>
                            <td>较弱</td>
                        </tr>
                        <tr>
                            <td><strong>主要用途</strong></td>
                            <td>系统开发、AI 传统应用</td>
                            <td>后端、大数据、Web</td>
                            <td>教育、脚本、语言设计</td>
                            <td>编辑器扩展</td>
                        </tr>
                        <tr>
                            <td><strong>生态活跃度</strong></td>
                            <td>稳定,经典</td>
                            <td><i class="fa-solid fa-fire"></i> 非常活跃</td>
                            <td>活跃 (学术界)</td>
                            <td>特定圈子活跃</td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </section>

    </main>

    <footer>
        <p>&copy; 2023 Lisp Dialect Showcase. Designed with <i class="fa-solid fa-heart" style="color: var(--cl-color);"></i> & Code.</p>
    </footer>

    <!-- 交互脚本 -->
    <script>
        /**
         * 切换标签页的函数
         * @param {HTMLElement} btn - 被点击的按钮元素
         * @param {string} targetId - 目标内容区域的 ID
         */
        function switchTab(btn, targetId) {
            // 1. 找到当前按钮所在的卡片容器
            const cardBody = btn.closest('.card').querySelector('.card-body');
            
            // 2. 移除该卡片下所有按钮的 active 类
            const buttons = btn.parentElement.querySelectorAll('.tab-btn');
            buttons.forEach(b => b.classList.remove('active'));
            
            // 3. 隐藏该卡片下所有内容区域
            const contents = cardBody.querySelectorAll('.tab-content');
            contents.forEach(c => c.classList.remove('active'));
            
            // 4. 激活当前按钮和目标内容
            btn.classList.add('active');
            document.getElementById(targetId).classList.add('active');
        }

        // 添加简单的滚动动画效果
        document.addEventListener('DOMContentLoaded', () => {
            const cards = document.querySelectorAll('.card');
            
            const observer = new IntersectionObserver((entries) => {
                entries.forEach(entry => {
                    if (entry.isIntersecting) {
                        entry.target.style.opacity = '1';
                        entry.target.style.transform = 'translateY(0)';
                    }
                });
            }, { threshold: 0.1 });

            cards.forEach((card, index) => {
                // 初始化状态,用于动画
                card.style.opacity = '0';
                card.style.transform = 'translateY(20px)';
                card.style.transition = `all 0.6s ease ${index * 0.1}s`; // 阶梯式延迟
                observer.observe(card);
            });
        });
    </script>
</body>
</html>