ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ExpRe[23] emacs初步,Oz语言Hello world

2021-12-14 19:33:03  阅读:246  来源: 互联网

标签:code Mozart 23 ExpRe Emacs Oz emacs Ctrl


目录
时效性
本篇撰写时间为2021.12.14,由于计算机技术日新月异,博客中所有内容都有时效和版本限制,具体做法不一定总行得通,链接可能改动失效,各种软件的用法可能有修改。但是其中透露的思想往往是值得学习的。
本篇前置:

Emacs

打开Emacs

Emacs是一款争议极大的编辑器,功能强大,上手困难
在vscode能remote-ssh的今天,Emacs的优势已经并不特别大(本来在命令行环境编辑是Emacs的优势)
不过,其有成熟完善的生态,有许多社区贡献者参与开发插件。
org-mode,Mozart等Emacs专属的东西算是这个时代Emacs的一大意义了。
本文中采用MobaXterm进行ssh连接。不同的ssh连接方式(或者直接本地终端使用)将导致快捷键的作用不同。具体和ASCII码到键盘的绑定有关。参见总结与问答练习

  • 在linux服务器上
    sudo docker pull wkusnierczyk/mozart-1.4.0
  • sudo docker run -it wkusnierczyk/mozart-1.4.0 bash
  • emacs -nw
    image
    这里的CCtrlMAlt. 所以有人戏称用emacs得用钢琴踏板。

首先接触的6个命令(组合)

C-x C-c关闭emacs
C-h t打开教程(注意区分于C-h C-t. 不过你按C-h C-t也能起到C-h t的效果)
C-v(尝试按多次看效果)
M-v(尝试按多次看效果)
C-l(尝试按多次看效果)
刚刚的三个用于浏览教程
C-g中止命令
记住了这6个命令组合,之后就可以看教程学习各种命令了(至少也知道怎么关掉emacs了)
当然,还是google在手边最直接,要什么随时查

  • 方向键或触控板也可以移动光标
  • 在一开始打开emacs时,各种东西没有加载完全,这时按的键不会有效果。一定要等加载好(显示好)才开始按命令。
  • 截至2021.12.14
    • 如果用vscode做ssh,则C-vM-v等快捷键可能功能不正常
    • MobaXterm做ssh,上述两个键是正常的,但退格键将变成C-h,故导致新手极其容易误操作打开帮助界面。该界面可以用q退出
    • 如果想删除(且暂时不想动emacs配置)的话,可以先左移再用Delete键或者C-d命令。当然也有其它解决方法。

Mozart(Oz)

背景介绍和文档

The Mozart Programming System combines ongoing research in programming language design and implementation, constraint logic programming, distributed computing, and human-computer interfaces. Mozart implements the Oz language and provides both expressive power and advanced functionality. (mozart2.org)

实际上,Mozart Programming System是用于程序设计教学目的的一个系统,其implement Oz语言。
其支持许多种paradigm(所以有人用它开发实验性质的玩意)。
其配套书籍是被称为继SICP后的“下一本圣经”:CTM
Concepts, Techniques and Models of Computer Programming
目前Mozart2暂不支持约束式等。所以我们本篇中选择的是Mozart 1.4.0的docker镜像
文档http://mozart2.org/mozart-v1/doc-1.4.0/
有趣的是,原书中提到

The Mozart system can be downloaded without charge from the Mozart Con-
sortium Web site http://www.mozart-oz.org. Releases exist for various flavors of
Windows and Unix and for Mac OS X

但是该网址在2021.12.14已暂时无法访问
image

Hello world

输入

我们直奔文档的http://mozart2.org/mozart-v1/doc-1.4.0/tutorial/node2.html#chapter.opi

This tutorial contains many code examples and you are highly encouraged to try them out interactively as you go. This can be done very comfortably by taking advantage of the Mozart system's interactive development environment. We normally call it the OPI, which stands for the Oz Programming Interface, and it is described extensively in ``The Oz Programming Interface''. In the present section, you will learn just enough about the OPI to allow you to start experimenting with our code examples.
Under Unix, the OPI is normally started by invoking the command oz at the shell prompt.

所以我们关掉刚刚打开的emacs,直接oz
image
上面部分可以写小片段,然后下方展示compiler对你的小片段得到的结果("transcript")
我们输入{Show 'Hello World'}(回忆:千万别按退格。想删除使用Delete删除)
image

给compiler

F10,并把MobaXterm窗口的高度调高,即可看到menubar对应了什么按键
image
由此我们知道按F10 O F(区分大小写)可以把代码给compiler
注:在F10出来的界面误操作请按C-g中止
结果为
image

查看输出结果

文档中提到

If we select from the Oz menu Show/Hide -> Emulator, we now see: ...

所以我们F10 O h e可以看到输出
image

总结和问答练习

  1. Q: 为什么MobaXterm按退格键会出现“帮助”界面?
    A: UNIX的退格键和Ctrl + h和ASCII码08有着密切联系。具体参见维基

^H. Pressing the backspace key on a computer terminal would generate the ASCII code 08, BS or Backspace, a control code which would delete the preceding character. That control code could also be accessed by pressing Control-H, as H is the eighth letter of the Latin alphabet. (Wikipedia)

你可以试试在MobaXterm的终端(不是emacs里)里敲几个字母,然后Ctrl + h,发现效果就是删除一个字符
注:类似地Ctrl + c其实是^C. 每次Ctrl + c停止时,可以看到上一行会显示^C
image

  1. Q:
    M-C-x(也就是Ctrl + Alt + x)可以看到输出
    image
    C-. C-l没用
    参考资料:
    image
    想解决这个,应该如何搜索?

标签:code,Mozart,23,ExpRe,Emacs,Oz,emacs,Ctrl
来源: https://www.cnblogs.com/minor-second/p/15689596.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有