오프사이드 룰
컴퓨터 프로그래밍 언어의 블록들이 들여쓰기로 표현되는 경우 오프사이드 룰(off-side rule)을 준수한다고 이야기된다.[1][2] 이 용어는 축구의 오프사이드 규정의 말장난으로 추정되며 피터 J. 랜딘에 의해 만들어졌다. 반의어는 자유형 언어, 특히 중괄호 프로그래밍 언어이며, 이 언어의 경우 들여쓰기가 의미없으며 들여쓰기는 단지 코드 서식의 문제일 뿐이다.
코드 예시[편집]
다음은 파이썬의 들여쓰기 블록의 예시이다. 콜론은 가독성을 위한 파이썬 언어 문법의 일부이며[3] 오프사이드 규칙 구현에 필수적인 것은 아니다.
파이썬에서 선언이 아닌 문의 경계를 정의하기 위해 이 규칙을 사용한다.
def is_even(a: (int, float)) -> bool:
"""Determine whether number 'a' is even."""
if int(a % 2) == 0:
print('Even!')
return True
print('Odd!')
return False
또, 파이썬은 중괄호 안에서 오프사이드 룰을 유예시키기도 한다. 괄호 내 문들은 괄호가 일치하거나 일치하지 않을 때까지 계속한다:
{
"this": True,
"that": False,
"them": [1, 2,
3, 4, 5,
6, 7, 8,
9, 10, 11, 23]
}
이 딕셔너리에서 키들은 들여쓰기가 되어 있으며 리스트는 두 줄로 분리되어 있다.
오프사이드 룰 언어[편집]
- 프로그래밍 언어
- ABC
- Boo
- 버디스크립트(BuddyScript)
- 코브라
- 커피스크립트
- Converge
- 커리
- Elixir (
, do:
블록) - Elm
- F# (초기 버전에서
#light
를 지정할 때 룰 적용. 나중에 출시된 버전에서는#light "off"
가 아닐 때 적용됨[4]) - 지니
- 하스켈[5] (중괄호가 없는 상황에서
where
,let
,do
,case ... of
절이 올 때) - Inform 7
- ISWIM
- 라이브스크립트
- 미란다
- 문스크립트(MoonScript)[6][7]
- Nemerle
- 님
- occam
- PROMAL
- 파이썬
- 스킴
- 스핀
- XL
- 기타 언어
각주[편집]
- ↑ Hutton, G. (2012년 12월 6일). 〈Parsing Using Combinators〉. Davis, Kei; Hughes, John. 《Functional Programming: Proceedings of the 1989 Glasgow Workshop 21–23 August 1989, Fraserburgh, Scotland》. Springer Science & Business Media. 362–364쪽. 2015년 9월 3일에 확인함.
- ↑ Turner, D.A. (2013년 8월 13일). 〈Some History of Functional Programming Languages (Invited Talk)〉. Loidl, Hans Wolfgang; Peña, Ricardo. 《Trends in Functional Programming: 13th International Symposium, TFP 2012, St Andrews, UK, June 12–14, 2012, Revised Selected Papers》. Springer. 8쪽. 2015년 9월 3일에 확인함.
- ↑ “Python FAQ on colons”. 2012년 2월 7일에 원본 문서에서 보존된 문서. 2020년 6월 16일에 확인함.
- ↑ Syme, Don. “Detailed Release Notes for the F# May 2009 CTP Update and Visual Studio 2010 Beta1 releases”. 2019년 1월 21일에 원본 문서에서 보존된 문서.
- ↑ The Haskell Report - Layout
- ↑ MoonScript, a language that compiles to Lua
- ↑ MoonScript 0.5.0 - Language Guide
- ↑ reStructuredText Markup Specification - Indentation
이 문서에는 GFDL 라이선스로 배포된 자유 온라인 컴퓨팅 사전(FOLDOC)의 내용을 기초로 작성된 내용이 포함되어 있습니다.