Cat — функциональный стековый язык программирования вдохновлен языком программирования Joy, от которого он отличается тем, что обеспечивает статическую типизацию с выводом типов (как, например, в ML и Haskell). Это один из подходов к решению проблемы надёжности, существующей в стековых языках[2] Так же включает макроязык MetaCat[3], позволяющий расширение языка Cat путём переопределения термов.
Cat | |
---|---|
Класс языка | Конкатенативный язык программирования |
Появился в | 2006[1] |
Автор | Christopher Diggins |
Выпуск | 1.0 beta 4. (16 апреля 2008) |
Система типов | строгая, статическая, с выводом типов |
Испытал влияние | Joy, СIL, Java bytecode, Haskell, Factor, Forth |
Лицензия | MIT License |
Сайт | cat-language.com |
Cat разрабатывался как высокоуровневый промежуточный язык, который также может использоваться как самостоятельный язык для разработки простых приложений. Таким образом, он занимает нишу аналогичную PostScript. Другое назначение этого языка — преподавание основных понятий программирования.
Примеры
правитьdefine fib { dup 1 <= [] [dup 1 - fib swap 2 - fib +] if } 1 [dup fib write ", " write inc] [dup 16 lteq] while "..." writeln
define fact { dup 1 <= [pop 1] [dup 1 - fact *] if } 0 [dup write "! = " write dup fact writeln inc] [dup 16 lteq] while
Реализации
правитьБазовая реализация Cat представляет собой написанный на C# интерпретатор[4] и компилятор в CIL-код. Доступны также интерпретаторы Cat, написанные на Scheme[5], JavaScript[6], Python[7], Haskell[8], Ωmega[англ.][9], Standard ML[10].
В настоящее время Christopher Diggins работает над проектом cvml (Chickadee Virtual Machine Language)[11], написанной на C++ виртуальной машиной.
Примечания
править- ↑ The Cat Programming Language Архивная копия от 20 июня 2010 на Wayback Machine, Lambda the Ultimate
- ↑ Factor: a dynamic stack-based programming language Архивная копия от 26 июля 2011 на Wayback Machine (англ.) — Slava Pestov, Daniel Ehrenberg, Joe Groff. Dynamic Languages Symposium 2010 Архивная копия от 18 апреля 2011 на Wayback Machine, см. раздел Related Works
- ↑ MetaCat . Дата обращения: 31 мая 2015. Архивировано 31 мая 2015 года.
- ↑ Cat — A Statically Typed Programming Language Interpreter in C# Архивная копия от 13 ноября 2011 на Wayback Machine, Christopher Diggins, 4 Nov 2006, The Code Project
- ↑ scheme-cat Архивная копия от 24 июля 2010 на Wayback Machine — a separate project for embedding Cat in Scheme by Ben Chambers
- ↑ Online Cat interpreter Архивировано 15 июня 2011 года.
- ↑ Cat in Python Архивная копия от 21 августа 2011 на Wayback Machine — implementation by Andrew Nelis
- ↑ Cat in Haskell Архивная копия от 13 июня 2012 на Wayback Machine
На основе: Techniques for Embedding Postfix Languages in Haskell by Chris Okasaki. Haskell Workshop, October 2002, pages 105—113. Архивная копия от 20 июля 2011 на Wayback Machine+source code Архивная копия от 20 июля 2011 на Wayback Machine - ↑ Cat interpreter in Omega using thrists (threaded lists) by Gabor Greif Архивировано 19 декабря 2013 года.
- ↑ Typed callcc in a stack-based language . Дата обращения: 1 июня 2011. Архивировано 17 декабря 2010 года.
- ↑ cvml Архивная копия от 4 мая 2013 на Wayback Machine на Google Code
Литература
править- Christopher Diggins. Cat: A Functional Stack-Based Little Language (англ.) // Dr. Dobb's Journal. — April 15, 2008.
- Christopher Diggins. Typing Functional Stack-Based Languages (PDF, 0.7 МБ). Submitted for consideration to ICFP 2007
- Christopher Diggins. Simple Type Inference for Higher-Order Stack-Oriented Languages (PDF, 100Kb), Technical Report Cat-TR-2008-001, Draft April 20, 2008
- Christopher Diggins. What is a Concatenative Language . Dr. Dobbs (31 декабря 2008). Архивировано из оригинала 14 мая 2012 года.
Ссылки
править- cat-language, The Cat Programming Language Project на Google Code
- Cat Language discussion group
- The Kitten Programming Language
Это заготовка статьи о компьютерных языках. Помогите Википедии, дополнив её. |