# 왜 Fennel인가?

> Clean Markdown view of GeekNews topic #20336. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=20336](https://news.hada.io/topic?id=20336)
- GeekNews Markdown: [https://news.hada.io/topic/20336.md](https://news.hada.io/topic/20336.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-04-15T10:28:51+09:00
- Updated: 2025-04-15T10:28:51+09:00
- Original source: [fennel-lang.org](https://fennel-lang.org/rationale)
- Points: 9
- Comments: 2

## Summary

**Fennel**은 **Lua** 런타임에서 실행되는 프로그래밍 언어로, Lua의 단점을 보완하여 명확하고 오류를 줄이는 대안을 제공합니다. 이 언어는 **Lisp 계열**의 문법을 사용하여 구문 복잡성을 줄이고 코드의 가독성을 높입니다. 또한, **변수 재할당**, **테이블 표기법**, **함수의 인수 검사** 등에서 Lua보다 개선된 기능을 제공합니다. **구조 분해**, **패턴 매칭**, **매크로 시스템**을 통해 보다 선언적인 조건문 작성과 구문 확장이 가능합니다.

## Topic Body

- **Fennel**은 Lua 런타임에서 실행되는 프로그래밍 언어임
- **Lua**는 간단하면서도 강력한 프로그래밍 언어로, 다른 프로그램에 쉽게 통합되어 사용자에게 재프로그래밍 가능성을 제공함
- **Fennel**은 Lua의 단점을 보완하여, 보다 명확하고 오류를 줄이는 대안을 제공함
- **Fennel**은 Lisp 계열의 문법을 사용하여, 구문 복잡성을 줄이고 코드의 가독성을 높임
- **Fennel**은 변수 재할당, 테이블 표기법, 함수의 인수 검사 등에서 Lua보다 개선된 기능을 제공함

---

### Fennel이란?

- Fennel은 **Lua** 런타임에서 실행되는 프로그래밍 언어임
- Lua는 간단하면서도 강력한 언어로, 다른 프로그램에 쉽게 통합되어 사용자에게 재프로그래밍 가능성을 제공함
- Fennel은 Lua의 단점을 보완하여, 보다 명확하고 오류를 줄이는 대안을 제공함

### Lua의 장점

- Lua는 **작고 빠른** 언어로, 약 19,000줄의 C 코드로 구성되어 278kb로 컴파일됨
- **개념적 단순성**을 유지하면서도 강력한 기능을 제공함
- 다른 프로그램에 쉽게 통합되어 **사용자가 프로그램을 재프로그래밍**할 수 있게 함

### Fennel의 주요 특징

- Fennel은 **Lisp 계열**의 문법을 사용하여, 구문 복잡성을 줄이고 코드의 가독성을 높임
- 모든 것이 **표현식**으로 처리되며, 연산자 우선순위나 조기 반환에 대한 모호성이 없음
- **변수**: 전역 변수 사용을 어렵게 하여 실수를 줄이고, 변수 재할당 시 `var`를 사용하여 명확성을 높임

### 테이블과 루프

- Fennel은 **테이블 표기법**을 개선하여, 배열과 키/값 테이블을 구분함
- 루프에서 `for`와 `each`를 사용하여 **명확한 구문**을 제공함

### 함수와 기타 기능

- Fennel은 함수의 **인수 검사**를 지원하여, 인수 부족 시 오류를 발생시킴
- **구조 분해**와 **패턴 매칭**을 지원하여, 보다 선언적인 조건문 작성이 가능함
- **매크로 시스템**을 포함하여, 새로운 구문 형태를 쉽게 확장할 수 있음

## Comments



### Comment 37186

- Author: neo
- Created: 2025-04-15T10:28:51+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=43673551)   
* 새로운 언어들이 Lua 런타임을 목표로 하는 것을 보는 것이 즐거움  
  - 최근에 SSE 서버를 Lua로 프로그래밍 가능하게 만들었음  
  - Lua와 mlua-rs Rust 바인딩을 강력히 추천함  
  
* Fennel이 좋음  
  - neovim 설정을 Fennel로 변환한 후 후회하지 않음  
  
* Forth, Lisp, Lua 외에도 Tcl이 작은 임베디드 언어로 언급될 가치가 있음  
  - v8 버전부터 복잡해졌지만, 초기 버전은 매우 간단했음  
  - Ousterhout의 책을 읽고 감명받아 직접 구현해보았음  
  
* LISPy 언어의 매력을 이해하지 못함  
  - 파서는 간단하고 우아하지만, 개발자는 사용자의 편의를 우선해야 한다고 생각함  
  - 코드 작성이 번거롭고 불필요하게 기호가 많음  
  - C와 유사한 구문을 파싱하는 것이 그렇게 어렵지 않음  
  
* Fennel의 Lua로 컴파일하면서 메타 프로그래밍 기능을 유지하는 접근 방식이 우아함  
  - 구문이 Clojure를 연상시키지만 JVM 오버헤드는 없음  
  - 임베디드 시스템이나 게임 개발에 적합한 조합임  
  
* Fennel이 꽤 좋음  
  - 점진적 타입 지원이나 정적 도구를 위한 타입 주석을 허용했으면 좋겠음  
  - 동적 타이핑이 유효한 선택이지만, 점진적 타입 지원이 있는 언어가 많아져서 돌아가기 어려움  
  
* Lua 위에 구축된 다른 언어를 찾는 사람들을 위한 정보  
  - https://moonscript.org/  
  
* 괄호에 대해 불평하는 사람들은 Lisp을 충분히 코딩하지 않았을 것임  
  - 괄호를 극복하면 언어의 동질성이 빛나고 Lisp을 좋아하는 이유를 이해하게 됨  
  
* 캐주얼하고 재미있는 게임 개발에 좋음  
  - TIC-80이 직접 지원하며, Fennel에서 PICO-8로 쉽게 전환 가능함

### Comment 37202

- Author: nemorize
- Created: 2025-04-15T21:06:27+09:00
- Points: 1
- Parent comment: 37186
- Depth: 1

문스크립트 링크가 잘못 걸려있네요~  
https://moonscript.org/
