7月28日是什么星座| 可颂是什么意思| 宝宝病毒感染吃什么药效果好| 龙虾吃什么| 生气吃什么药可以顺气| 什么是应激反应| 樊字五行属什么| 领结婚证需要什么| 茯苓泡水喝有什么功效| 又什么又什么式的词语| 窦性心动过缓是什么病| 蓝莓吃了有什么好处| 腱鞘炎是什么引起的| 韭菜什么时候种| 斯人是什么意思| 腥臭味是什么妇科病| 神经性头疼吃什么药效果好| 晚上五点是什么时辰| 鲍鱼是什么意思| 提刑官相当于现在什么官| 扫兴什么意思| 不显山不露水是什么意思| 高招是什么意思| 什么的眼光| 国家一级演员是什么级别| 什么是情感障碍| 肝在人体什么位置| 电饭煲什么内胆最好| 提拔是什么意思| 吉页读什么| 克服是什么意思| 肝功能七项是检查什么| 达芬奇发明了什么| 与虎谋皮是什么生肖| 什么属于| 变色龙指什么样的人| 闲的蛋疼是什么意思| 假性宫缩是什么感觉| 女生不来大姨妈是什么原因| 左脸颊有痣代表什么| 男性尿路感染有什么症状| 口腔溃疡吃什么药好使| 鸡蛋粘壳是什么原因| 什么人不宜吃石斛| 什么门永远关不上| 金银花有什么效果| 拉屎为什么是绿色的| 仙人掌有什么作用| 什么水果去火| 摩羯座女生和什么星座男生最配| 沉香有什么作用与功效| 大庭广众什么意思| 铁蛋白高是什么意思| 女人排卵是什么时间| 貔貅什么人不能戴| 舌裂纹是什么原因| 什么是低钾血症| 小孩病毒性感冒吃什么药效果好| 谷氨酰转肽酶是指什么| 菜心是什么菜的心| 元字五行属什么| 中线是什么意思| 孕妇口腔溃疡能用什么药| 不二人选是什么意思| 缺钾吃什么食物| 月经周期短是什么原因| 皮肤暗黄是什么原因| 阿司匹林肠溶片什么时间吃最好| 为什么手老是出汗| 半元音是什么意思| 查激素水平挂什么科| 娃哈哈纯净水是什么水| 什么是假性抑郁症| 啤酒加生鸡蛋一起喝有什么效果| 女人物质是什么意思| 猪肝炒什么| 胃镜挂什么科| 公安局跟派出所有什么区别| 草字头一个见念什么| 八七年属兔的是什么命| 腰椎穿刺是检查什么的| 菊花什么时候开花| 阴唇肥大是什么原因| 头皮上长疣是什么原因造成的| 减肥吃什么主食比较好| 大堤是什么意思| 生理曲度存在是什么意思| 小怪兽是什么| 启明星是什么意思| 举人相当于现在的什么官| 6月17号什么星座| 月亮发红是什么原因| 一直倒霉预示着什么| 微喇裤配什么鞋子好看| 白球比低是什么原因| 子叶是什么| 泞字五行属什么| 为什么招蚊子咬| 番茄酱和番茄沙司有什么区别| 筑基期后面是什么| 6个月宝宝可以吃什么水果| 什么是华人| 甘油三酯高是什么原因造成的| 展望未来什么意思| 神经性头疼吃什么药好| 老年人缺钾是什么原因引起的| 喝红牛有什么好处和坏处| 当今社会什么行业前途比较好| 乌龟和甲鱼有什么区别| 体型最大的恐龙是什么| 米字五行属什么| 1月16日什么星座| 问候是什么意思| geneva是什么牌子手表| XXJ什么意思| 睡觉醒来口苦是什么原因| 拉肚子拉稀水吃什么药| 螃蟹不能跟什么一起吃| 鬼压床是什么原因| 火彩是什么| 气胸吃什么药好得快| 母亲节说什么| 贫血吃什么补血最快| 胃一阵一阵绞痛是什么原因| 高沫是什么茶| 皮癣是什么原因引起的| 消炎药是什么药| 应激是什么意思| 睡觉流鼻血是什么原因| 狼毫毛笔是什么毛| 高血压为什么不能献血| 老年人适合吃什么| 绮字五行属什么| 孕妇奶粉什么时候开始喝最好| 什么是汗疱疹| sherry是什么意思| 孔雀男是什么意思| 口腔医学学什么课程| obsidian什么意思| 为什么头出汗特别多| 炮制是什么意思| 大禹姓什么| 经期吃什么水果比较好| 3.1是什么星座| 迪桑特属于什么档次| 骁字五行属什么| 脖子为什么有颈纹| 阴道里面瘙痒是什么原因| 什么样的脚好看| 微信加入黑名单和删除有什么区别| 体寒是什么原因引起的| 眼睛怕光是什么原因| 尿酸高中医叫什么病| 快递什么时候停运| 球蛋白偏低是什么原因| 经期头痛吃什么药| 凤仙花长什么样| 鹅蛋脸适合什么发型| 湿热内蕴吃什么中成药| nyc是什么牌子| 酒精过敏有什么症状| 婴儿吃不饱有什么危害| 黑色上衣搭配什么颜色裤子好看| prince是什么牌子| 荷叶茶有什么作用| 戊午五行属什么| 属鸡的和什么属相最配| 膝盖痛挂什么科| 邪气是什么意思| 91视频是什么| 什么是佝偻病有什么症状| 尿毒症是什么原因导致的| 韬字五行属什么| 生肖蛇和什么生肖相冲| 江苏有什么山| 咏柳是什么意思| 腰扭伤用什么药最好| 牙酸是什么原因| 毒灵芝长什么样| 不可开交是什么意思| 钙片不能和什么一起吃| pg是什么单位| 胆固醇高不能吃什么水果| 病案号是什么意思| 1940年出生属什么生肖| 吃什么可以养肝| 赵子龙属什么生肖| 什么原因得疱疹| 软糯什么意思| 甲硝唑治什么| 疾控中心属于什么单位| 县团级是什么级别| 芙蓉花又叫什么花| 维生素d和维生素ad有什么区别| 淋巴结肿大是什么原因| 梦见死人和棺材预示着什么| 什么情况要打破伤风| 礽是什么意思| 亡羊补牢的寓意是什么| alike是什么意思| 漏尿女性吃什么药最好| 坐飞机要带什么证件| 青少年流鼻血是什么原因引起的| 玫瑰花可以和什么一起泡水喝| 宝刀未老的意思是什么| 透明质酸钠是什么东西| 检查血液挂什么科| ems代表什么| 高密度脂蛋白偏高是什么意思| 蹦蹦跳跳的动物是什么生肖| 蛇信子是什么| 枕头底下放剪刀有什么说法| 吃什么能降铁蛋白| 良辰是什么意思| 什么的云彩| 身份证号码最后一位代表什么| 心态崩了什么意思| 鸟加一笔变成什么字| 996是什么| 低gi是什么意思| 阳历三月是什么星座| 女生适合抽什么烟| 八月十日是什么星座| 集体户口是什么意思| 水压低用什么花洒| 电话停机是什么意思| 天枢是什么意思| 梦见房子倒塌是什么意思| 脉压差小是什么原因| pa是什么单位| 黄体酮不足吃什么药| 惊涛骇浪什么意思| 喉咙干咳嗽是什么原因| 疱疹性咽峡炎吃什么药最管用| 命里有时终须有命里无时莫强求什么意思| 什么是钙化灶| 火险痣是什么意思| 阿斯伯格综合征是什么| 再接再厉是什么意思| 联通查流量发什么短信| 舌苔又白又厚是什么原因| 吃什么补血小板快| 核磁共振什么时候出结果| 2021属什么生肖| 纳豆什么味道| 什么是爱呢| 高危性行为是什么意思| 吃什么能提高性功能| 1958年属什么| 嘴酸是什么原因| 尿酸520属于什么水平| 台湾什么时候回归的| 探病是什么意思| 2016年属什么生肖| 北京豆汁什么味道| 1658是什么意思| 圣诞是什么意思| 吃什么补血贫血| 白癜风是什么样子的| 枉然是什么意思| 用红笔写名字代表什么| 螃蟹喜欢吃什么| 茶叶杀青是什么意思| white是什么意思颜色| 百度Jump to content

小升初全面取消推优 特长生招生范围仅限本区

From Wikipedia, the free encyclopedia
Chicken Scheme
Logo for Chicken Scheme
Chicken 5.0.0 interpreter running on macOS
ParadigmsMulti-paradigm: functional, imperative, meta
FamilyLisp
Designed byFelix Winkelmann
DeveloperThe Chicken Team
First appeared20 July 2000; 25 years ago (2025-08-06)[1]
Stable release
5.4.0 / 16 July 2024; 12 months ago (2025-08-06)
Typing disciplineDynamic, latent, strong
ScopeLexical
Implementation languageScheme, C
PlatformIA-32, x86-64, ARM, MIPS, SPARC64, PowerPC
OSCross-platform: Windows, Linux, macOS, FreeBSD, NetBSD, OpenBSD, Solaris, AIX, Haiku, Android, iOS
LicenseBSD
Filename extensions.scm
Websitewww.call-cc.org Edit this at Wikidata
Influenced by
Lisp, Scheme
百度 ”民族统一战线也成为党的领导人对这一时期统一战线的主要表述用语。

Chicken (stylized as CHICKEN) is a programming language, specifically a compiler and interpreter which implement a dialect of the programming language Scheme, and which compiles Scheme source code to standard C. It is mostly R5RS compliant and offers many extensions to the standard. The newer R7RS standard is supported through an extension library.[2] Chicken is free and open-source software available under a BSD license. It is implemented mostly in Scheme, with some parts in C for performance or to make embedding into C programs easier.

Focus

[edit]

Chicken's focus is quickly clear from its slogan: "A practical and portable Scheme system".

Chicken's main focus is the practical application of Scheme for writing real-world software. Scheme is well known for its use in computer science curricula and programming language experimentation, but it has seen little use in business and industry.[3] Chicken's community has produced a large set of libraries to perform a variety of tasks. The Chicken wiki (the software running it is also a Chicken program) also contains a list of software that has been written in Chicken.[4]

Chicken's other goal is to be portable. By compiling to an intermediate representation, in this case portable C (as do Gambit and Bigloo), programs written in Chicken can be compiled for common popular operating systems such as Linux, macOS, other Unix-like systems, Windows, Haiku, and mobile platforms iOS and Android.[5] It also has built-in support for cross-compiling programs and extensions,[6] which allows it to be used on various embedded system platforms.

Design

[edit]

Like many Scheme compilers, Chicken uses standard C as an intermediate representation. A Scheme program is translated into C by the Chicken compiler, and then a C compiler translates the C program into machine code for the target computer architecture, producing an executable program. The universal availability of C makes it useful for this purpose.

Chicken's design was inspired by a 1994 paper[7] by Henry Baker that outlined an innovative strategy to compile Scheme into C. A Scheme program is compiled into C functions. These C functions never reach the return statement; instead, they call a new continuation when complete. These continuations are C functions and are passed on as extra arguments to other C functions. They are calculated by the compiler.

So far, this is the essence of continuation-passing style. Baker's novel idea is to use the C call stack for the Scheme heap. Hence, normal C stack operations such as automatic variable creation, variable-sized array allocation, and so on can be used. When the stack fills up (that is, the stack pointer reaches the top of the stack), a garbage collection can be initiated. The design used is a copying garbage collector originally devised by C. J. Cheney, which copies all live continuations and other live objects to the heap.[8] Despite this, the C code does not copy C stack frames, only Scheme objects, so it does not require knowledge of the C implementation.

In full, the Scheme heap consists of the C stack as the nursery together with the two heaps required by the generational garbage collector. This approach gives the speed of the C stack for many operations, and it allows the use of continuations as simple calls to C functions. Further, Baker's solution guarantees asymptotic tail recursive behavior, as required by the Scheme language standard. The implementation in the Chicken Scheme compiler is even asymptotically safe for space.

Limitations and deviations from the standard

[edit]

Chicken Scheme is mostly R5RS-compliant, with a few notable limitations and deviations.[9] R7RS compatibility is supplied as an extension library.[2]

The core system has basic support for UTF-8 characters, however the string indexing and manipulation procedures are not UTF-8 aware. An extension library exists which adds support for full UTF-8 awareness.[10]

Add-on software

[edit]

Chicken has a large software repository of added libraries and programs, termed eggs.[11] This system is very similar to RubyGems.[12]

Initially, these eggs were developed in one central svn repository,[13] in which creating a tag would automatically cause a new version of the extension to become available for download. Currently, eggs can be developed anywhere and under any version control system, while still maintaining semi-automatic release management when using most of the popular code hosting sites.[14] This release method is VCS-agnostic in the sense that the user does not need to have these VCSes installed. The developer is free to host anywhere they choose, and can even choose to avoid public version control and distribute only plain tarballs.

For all released eggs, the latest version is tested automatically as part of a continuous integration process. A canonical test server exists,[15] where the core system and all eggs are tested daily against the most recent development version (to catch regressive bugs), and the most recent stable version (to ensure that everything works for users of the stable system). Also, anyone can volunteer to supply further testing capacity, on different: hardware, operating systems, or core releases.

Features

[edit]

Chicken supports most of R5RS standard Scheme, but it also adds a few nonstandard features which are not available in all Scheme implementations.

Foreign function interface

[edit]

Chicken compiling to C makes it possible to inject custom C code into the compiled result, which eases integrating with C libraries. Its foreign function interface supports converting back and forth between most built-in C types and corresponding Scheme objects.

Also, extension libraries exist for interfacing to Python,[16] Lua,[17] and Java, via Java Native Interface (JNI)[18] or a bridge.[19]

Cross-compiling

[edit]

It is relatively easy to cross-compile Scheme code to another platform (for example for embedded use on a device).

To make cross-compiling possible for Scheme code, Chicken imposes a model of separate compiling: A compiled module consists of two shared libraries. One library contains the actual code which will be used at runtime (compiled for the target platform), and the other is an import module, which will be used to load the code which runs at compile-time (on the host platform), such as procedural macro code.

The Chicken compiler can also be easily cross-compiled. After translation to C has been achieved, one can simply use a C compiler which is set up to build for another platform.

Modules and macros

[edit]

Since version 4, Chicken has a built-in module system and support for low-level hygienic macros through explicit renaming macros[20] (before version 4, this was available through an add-on library). Standard syntax-rules macros are also supported, and implicit renaming macros,[21] which is basically a reversed version of explicit renaming.

This mechanism trades performance for convenience. Each identifier not explicitly injected as unhygienic will be automatically renamed to avoid name capture. The performance cost occurs because implicit renaming requires the macro-expander to retraverse the expressions two more times. This cost is paid at expansion time, so a macro author must consider if longer compiling times are acceptable.

Remote debugger

[edit]

Since version 4.11, Chicken comes shipped with a debugger named Feathers.[22] When Scheme code is compiled with the needed debugging option, debugging events are injected at specific points in the code. These are implemented as calls to a C function, which is relatively low-overhead when not actually debugging the code. When debugging, it will try to make a TCP connection to a Feathers server process, possibly on a different machine. The process is halted, the user may set breakpoints and start the program. Then, when the breakpoint is hit, the client (process being debugged) enters a command loop, which allows interrogation of the client, to read out variables, or mutate them.

Limited static type analysis

[edit]

Chicken supports local flow analysis. This allows the compiler to catch variable type errors at compile-time, and perform type specialisation. This specialisation makes it possible to remove several safety checks for type detection at runtime when the type can be deduced at compile-time. This results in improved run-time performance.

This scrutinizer does not allow cross-module flow analysis, so it can only be used to optimize code that's part of one compiling unit (or module).

History

[edit]

CHICKEN Scheme was originally developed by Felix Winkelmann on Cygwin/gcc and later Visual C++ 5.0 on Windows 98.[1] He came up with the name "CHICKEN" arbitrarily as the "first thing that came to my mind that day" thinking of a plastic toy of Feathers McGraw on his desk. As the project matured, he decided not to change the name out of superstition.[23]

See also

[edit]

References

[edit]
  1. ^ a b Winkelmann, Felix. "Announcing the Chicken Scheme-to-C compiler". Google Groups (comp.lang.scheme).
  2. ^ a b evhan (2025-08-06). "r7rs (Chicken manual)". Chicken Scheme. Retrieved 2025-08-06.
  3. ^ "Scheme FAQ"., section "what is Scheme used for?"
  4. ^ Bex, Peter (sjamaan) (2025-08-06). "Software written in Chicken Scheme". Chicken Scheme. Retrieved 2025-08-06.
  5. ^ "Portability". Chicken Scheme Wiki.
  6. ^ Bex, Peter (sjamaan) (2025-08-06). "Cross development". Chicken Scheme (Manual). Retrieved 2025-08-06.
  7. ^ Baker, Henry (1994). "CONS Should Not CONS Its Arguments, Part II: Cheney on the M.T.A." Archived from the original on 2025-08-06.
  8. ^ Cheney, C.J. "A Nonrecursive List Compacting Algorithm". CACM 13,11 (Nov. 1970), 677-678.
  9. ^ Bex, Peter (sjamaan); Winkelmann, Felix (2025-08-06). "Confirmed deviations (Chicken manual)". Chicken Scheme. Retrieved 2025-08-06.
  10. ^ Bex, Peter (sjamaan); kooda; mario; svnwiki; wasamasa; kon; mario (2025-08-06). "utf8 (Chicken manual)". Chicken Scheme. Retrieved 2025-08-06.
  11. ^ "Chicken eggs". Chicken Scheme.
  12. ^ "RubyGems". RubyGems.org. Retrieved 2025-08-06.
  13. ^ Bex, Peter (sjamaan). "VCS-independent distribution of language extensions"., blogpost on More magic
  14. ^ "Instructions for popular code hosting methods and VCSes". Chicken wiki.
  15. ^ "Chicken automated tests". Chicken Scheme. Retrieved 2025-08-06.
  16. ^ iraikov (2025-08-06). "pyffi". Chicken Scheme Wiki. Retrieved 2025-08-06.
  17. ^ Bex, Peter (sjamaan); iraikov (2025-08-06). "Lua". Chicken Scheme Wiki. Retrieved 2025-08-06.
  18. ^ mario; svnwiki (2025-08-06). "JNI". Chicken Scheme Wiki. Retrieved 2025-08-06.
  19. ^ Winkelmann, Felix; mario (2025-08-06). "Javahack". Chicken Scheme Wiki. Retrieved 2025-08-06.
  20. ^ Bex, Peter (sjamaan); Winkelmann, Felix; mario (2025-08-06). "Module (Chicken syntax)". Chicken Scheme. Retrieved 2025-08-06.
  21. ^ Bex, Peter (sjamaan); Winkelmann, Felix; mario (2025-08-06). "Module (Chicken syntax)". Chicken Scheme. Retrieved 2025-08-06.
  22. ^ Bex, Peter (sjamaan) (2025-08-06). "Debugging". Chicken Scheme.
  23. ^ Croisant, John (2025-08-06). "Behind the Scenes with CHICKEN Scheme and SPOCK (Part 2)". Atomic Spin. Retrieved 2025-08-06.
[edit]
美仑美奂什么意思 气滞吃什么中成药 扁平足是什么样的 什么是封闭针 为什么发动文化大革命
湿气重的人适合吃什么 火加木是什么字 智能手环是干什么用的 什么是情商高 失败是成功之母是什么意思
输卵管造影是什么意思 红细胞平均体积偏低是什么意思 fc什么意思 早起眼皮肿是什么原因引起的 澳门回归是什么时候
阑尾炎吃什么药效果好 胃镜活检是什么意思 瓜子脸适合剪什么发型 大豆是什么 头昏挂什么科
7月份适合种什么菜hcv9jop1ns3r.cn 皮蛋吃多了有什么危害hcv9jop4ns8r.cn 孕妇喝咖啡有什么危害hcv8jop7ns7r.cn 夏天喝什么hcv9jop5ns9r.cn 女人亏气亏血吃什么补的快hcv8jop6ns2r.cn
奥特莱斯是什么hcv7jop4ns8r.cn 炒菜用什么油好hcv8jop9ns7r.cn 顺风耳是什么意思hcv9jop2ns4r.cn 可乐加味精女人喝了什么效果hcv7jop7ns4r.cn 咖啡喝多了有什么危害hcv8jop3ns7r.cn
佛珠断了有什么预兆hcv8jop5ns3r.cn 为什么血脂会高hcv9jop8ns3r.cn 心脏痛什么原因hcv8jop2ns3r.cn edifice是什么牌子手表yanzhenzixun.com 小丫头是什么意思beikeqingting.com
玮字五行属什么hcv9jop3ns4r.cn 去火喝什么茶最好hcv7jop9ns2r.cn 偶发室性早搏是什么意思hcv7jop9ns1r.cn 什么是缓刑意思是什么hcv8jop9ns5r.cn 脱发严重应该去医院挂什么科aiwuzhiyu.com
百度