江团鱼又叫什么鱼| 草果长什么样| 什么的东风填词语| 晚上11点是什么时辰| 南极和北极有什么区别| 6.4是什么星座| 井里面一个点念什么| 川流不息什么意思| 血小板低是什么意思| 什么叫hp感染| 三伏天什么时候开始| 什么化妆品好用哪个牌子的| 喝ad钙奶有什么好处| 怀孕送什么礼物| 7.8号是什么日子| 苯扎氯铵是什么| 条索灶是什么意思| 高血压吃什么水果好| 奇异果和猕猴桃有什么区别| 异什么同什么| 孕早期生气对胎儿有什么影响| 吃什么皮肤白的最快| 越吃越瘦是什么原因| 脾门区结节是什么意思| 膀胱炎吃什么药| 单脐动脉是什么意思| 夏天喝什么| 济公属什么生肖| 什么叫败血症| 开学买什么| 什么是琥珀| 女人梦到被蛇咬是什么意思| 鼻子闻不到味道是什么原因| 乙肝检查挂什么科| 小孩肚子疼是什么原因引起的| kelme是什么牌子| 鼻子上的痣有什么寓意| 莲字五行属什么| 补充微量元素吃什么| 三高是什么| 梦见吃红薯是什么意思| 不谷是什么意思| 脚腿肿是什么原因引起的| 财神位放什么最旺财| 鼻窦炎用什么药| 麦冬有什么作用| 牙龈老是出血是什么原因引起的| 细胞是什么| 胃胀胃不消化吃什么药| 女性阴道长什么样| 情花是什么花| 你在左边我紧靠右是什么歌| 打什么| 梦见自己拉了好多屎是什么意思| 上证指数是什么意思| 胁迫是什么意思| 卵巢筛查要做什么检查| 回乳是什么意思| 甲状腺结节是什么原因引起的| 吃什么能快速排便| 过期的钙片有什么用途| 阴虚火旺吃什么中成药好| 醋纤是什么面料| 明朝为什么会灭亡| 丹参有什么功效| 睾酮素低了有什么症状| 汗疱疹用什么药| 5点是什么时辰| 锁骨发适合什么脸型| 薄荷叶泡水喝有什么好处| 芸字五行属什么| 子宫纵隔什么意思| 男人射的快是什么原因| 阴道镜是什么| 四级军士长是什么级别| 身上遇热就痒是什么病| 天花是什么| 病毒性感冒吃什么药效果好| 乳糖不耐受喝什么奶粉| 空调一匹是什么意思| 呕吐拉肚子吃什么药| 10月6日是什么星座| 苏打和小苏打有什么区别| 射手属于什么象星座| 肺积水有什么症状| 磨砂膏是什么| 梦见输钱是什么预兆| 手关节疼痛挂什么科| 张家界为什么叫张家界| 方方土是什么字| 二级教授是什么意思| 尿葡萄糖是什么意思| 大腿外侧疼痛是什么原因| 失温是什么意思| 九孔藕和七孔藕有什么区别| 减少什么| 什么叫资本运作| 规格是什么| 活血化瘀是什么意思| 月经前腰疼的厉害是什么原因| 皮脂腺囊肿看什么科| 什么是性高潮| 白色鼻毛是什么原因| 我追呀追呀是什么歌曲| 酸奶用什么菌发酵| 高血压有什么症状| 孩子老是流鼻血是什么原因| 婴儿长牙有什么症状| 18属什么生肖| 懦弱的反义词是什么| 橘红是什么东西| 什么心什么胆| 二氧化碳是什么东西| 绿茶女什么意思啊| 318什么意思| 总是口腔溃疡是什么原因| 肠胃不好吃什么菜比较好| 拼音的音序是什么| 什么食物黄体酮含量高| 取笑是什么意思| 手比脸白是什么原因| 眼睛突然出血是什么原因导致| 1887年属什么生肖| 什么时间量血压最准确| 花木兰姓什么| 老花眼是什么原因引起的| 心灵手巧什么意思| 乌鱼子是什么意思| 和什么细什么| 海参头数是什么意思| 2009年是什么生肖年| 什么把什么造句子| 血吸虫是什么动物| 小囡是什么意思| 植脂末是什么| 和谐的意思是什么| 硬不起来是什么原因| 什么是骨科| 吃什么药能减肥| 茂盛的意思是什么| 什么时候喝牛奶效果最佳| 蚂蚁最怕什么东西| 心脏突然剧烈跳动是什么原因| gpt是什么意思| 庆大霉素治疗鱼什么病| 诞辰什么意思| 殁送是什么意思| 五官指的是什么| php是什么语言| 面藕是什么| 大姨妈来吃什么好| 空虚是什么意思| 什么的寒冷| 户主有什么权利| 赛治是什么药| 话梅泡水喝有什么好处和坏处| 舌头麻是什么病的前兆| 灰指甲有什么危害| 什么看果园越看越少| george是什么牌子| 1938年属什么生肖| 胎动什么时候出现| 漫字五行属什么| 你要干什么| 珍珠鸟是什么鸟| 寿辰是什么意思| 地三鲜是什么| 黄金属于五行属什么| 双肺索条灶是什么意思| 男人为什么好色| 增强抵抗力吃什么| 化疗后吃什么排毒最快| 宽带m是什么意思| 痔疮有什么影响| 二进宫是什么意思| 胃肠炎吃什么药好| 鳖吃什么| 口蜜腹剑是什么意思| 八月初八是什么星座| 中间细胞百分比偏高是什么意思| 深海鱼油什么时候吃最好| 什么自行车最贵| crp是什么检查项目| 什么叫洗钱| 长命百岁是什么意思| 什么叫人格| luky是什么意思| 做梦梦到蛇是什么意思| 递增是什么意思| 湿漉漉是什么意思| 治疗狐臭最好的方法是什么| 乳腺囊实性结节是什么意思| 小手指麻木是什么原因| 无名指长代表什么| 脑梗适合吃什么食物| 手抖吃什么药最好| 521是什么意思| 脂肪酶是什么| 吃什么可以瘦肚子| 小县城适合做什么生意| 小孩反复发烧是什么原因引起的| 职务是什么意思| 儿童内热吃什么去内热| 谷草谷丙是什么| 出痧是什么意思| 87年属什么| 舌头尖发麻是什么原因| 细菌性阴道炎用什么药效果最好| 晕车吃什么| 四月初十是什么星座| 我国最早的中医学专著是什么| 胆结石切除胆囊后有什么影响| 痘痘挤出来的白色东西是什么| 过敏性紫癜有什么症状| 棺材中禁止放什么东西| 宝宝吐奶是什么原因| 病毒性咳嗽吃什么药好| 什么叫游走性关节疼痛| 麻烦是什么意思| 兰花长什么样| 平起平坐代表什么生肖| usc是什么意思| 妙手回春是什么意思| 祭司是干什么的| dsa检查是什么意思| 前白蛋白低是什么意思| 内伤湿滞什么意思| 肌酐什么意思| 2.16什么星座| 低迷是什么意思| 窈窕淑女君子好逑是什么意思| 脸小适合什么发型| 雯五行属什么| 喜上眉梢是什么意思| 什么发型好看| 女人脚肿是什么原因| 口牙是什么意思| 新茶是什么意思| 什么叫脂溢性皮炎| 产后抑郁症有什么表现症状| 冷淡是什么意思| 拉肚子吃什么抗生素| 05是什么生肖| 经期洗澡有什么影响| 什么是中产阶级| 冲蛇煞西是什么意思| 打呼噜挂什么科室| 脂肪瘤看什么科| 玉和石头有什么区别| 黄油是什么| 乐捐是什么意思| 霸王别姬是什么菜| 爱居兔女装是什么档次| 渎神是什么意思| 庶子是什么意思| 敦伦是什么意思| 什么属相不能挂山水画| 老是流眼泪是什么原因| 生长发育挂什么科| 办健康证需要带什么证件| 什么情况下需要做肠镜| 小孩做ct对身体有什么影响| 多吃黄瓜有什么好处| 处心积虑什么意思| 百度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-05)[1]
Stable release
5.4.0 / 16 July 2024; 12 months ago (2025-08-05)
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-05). "r7rs (Chicken manual)". Chicken Scheme. Retrieved 2025-08-05.
  3. ^ "Scheme FAQ"., section "what is Scheme used for?"
  4. ^ Bex, Peter (sjamaan) (2025-08-05). "Software written in Chicken Scheme". Chicken Scheme. Retrieved 2025-08-05.
  5. ^ "Portability". Chicken Scheme Wiki.
  6. ^ Bex, Peter (sjamaan) (2025-08-05). "Cross development". Chicken Scheme (Manual). Retrieved 2025-08-05.
  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-05.
  8. ^ Cheney, C.J. "A Nonrecursive List Compacting Algorithm". CACM 13,11 (Nov. 1970), 677-678.
  9. ^ Bex, Peter (sjamaan); Winkelmann, Felix (2025-08-05). "Confirmed deviations (Chicken manual)". Chicken Scheme. Retrieved 2025-08-05.
  10. ^ Bex, Peter (sjamaan); kooda; mario; svnwiki; wasamasa; kon; mario (2025-08-05). "utf8 (Chicken manual)". Chicken Scheme. Retrieved 2025-08-05.
  11. ^ "Chicken eggs". Chicken Scheme.
  12. ^ "RubyGems". RubyGems.org. Retrieved 2025-08-05.
  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-05.
  16. ^ iraikov (2025-08-05). "pyffi". Chicken Scheme Wiki. Retrieved 2025-08-05.
  17. ^ Bex, Peter (sjamaan); iraikov (2025-08-05). "Lua". Chicken Scheme Wiki. Retrieved 2025-08-05.
  18. ^ mario; svnwiki (2025-08-05). "JNI". Chicken Scheme Wiki. Retrieved 2025-08-05.
  19. ^ Winkelmann, Felix; mario (2025-08-05). "Javahack". Chicken Scheme Wiki. Retrieved 2025-08-05.
  20. ^ Bex, Peter (sjamaan); Winkelmann, Felix; mario (2025-08-05). "Module (Chicken syntax)". Chicken Scheme. Retrieved 2025-08-05.
  21. ^ Bex, Peter (sjamaan); Winkelmann, Felix; mario (2025-08-05). "Module (Chicken syntax)". Chicken Scheme. Retrieved 2025-08-05.
  22. ^ Bex, Peter (sjamaan) (2025-08-05). "Debugging". Chicken Scheme.
  23. ^ Croisant, John (2025-08-05). "Behind the Scenes with CHICKEN Scheme and SPOCK (Part 2)". Atomic Spin. Retrieved 2025-08-05.
[edit]
果脯是什么东西 冬五行属什么 什么东西解酒 野格是什么酒 八月十八号是什么星座
凡人修仙传什么时候写的 淋是什么意思 螺蛳粉为什么那么臭 贫血喝什么口服液 hys是什么意思
空调滴水是什么原因 节源开流是什么意思 绊倒是什么意思 巩加虫念什么 栓是什么意思
1988属什么 跟腱炎吃什么药 盆腔炎是什么引起的 生是什么结构的字 肩胛骨疼痛是什么原因
fbi是什么hcv8jop7ns6r.cn 为什么哭了眼睛会肿hcv9jop3ns8r.cn 睡觉起来嘴巴苦是什么原因hcv8jop8ns5r.cn 脚跟痛什么原因hcv7jop6ns2r.cn 耳鸣是什么原因造成的hcv8jop7ns6r.cn
腹腔肠系膜淋巴结是什么病hcv7jop5ns1r.cn 吃力不讨好是什么意思hcv8jop5ns8r.cn 血糖低吃什么补的最快hcv7jop5ns0r.cn 青出于蓝是什么意思fenrenren.com 爱情是什么样子的hcv8jop1ns1r.cn
年轻人为什么会低血压hcv9jop7ns0r.cn 3月4号是什么星座hcv8jop1ns1r.cn 肚子硬是什么原因hcv7jop7ns3r.cn llc是什么意思hcv8jop6ns1r.cn 刮痧是什么hcv9jop6ns8r.cn
乙肝阴性是什么意思xjhesheng.com 尿尿疼是什么原因hcv9jop0ns5r.cn 手抖是什么原因hcv8jop1ns9r.cn 肺部钙化是什么意思啊hcv8jop3ns3r.cn 衣冠禽兽什么意思hcv8jop0ns2r.cn
百度