用 Emacs 写诗

我当初还试图看过它的源码来着,可惜我实在对js一窍不通 :rofl:

不过后来就没什么兴趣了,因为写诗这事儿吧,其实真的不需要编辑器 :rofl:……

:hear_no_evil:这是我梦想的编程语言

我之前还和同学讨论过实现这样一门语言的可行性,没想到是我孤陋而寡闻 :rofl: 事实证明,前辈们永远不会让我失望 :rofl:

中文编程感觉逻辑简单的程序还好说,逻辑比较复杂的就难了,我用mq语言,易语言实际写过程序(game外挂,不明白中文编程为啥会在这方面流行),后面实在写不下去了

现在我觉得中文编程的应用不应该是写一些底层的程序,而是在前端文本标记语言这方面,也就是html这样的语言。

我现在对org-mode的使用就是把org-mode当作前端工具 模仿html来用的 ,在org-mode里自定义字段标记都使用中文的,但如何在org-mode里实现更多html的功能还没有头绪

用中文标记的一个好处是可以文本对齐,看我下图那一排:标题: :摘要: :分类: 这几个字可以长度一致完美对齐,这些文字全换成英文的就显得长短不一致,英文感觉不太可能用固定长度的字符来分别表达不同的意思,而中文就可以,中文有那么多可以完美对齐的诗句。

chinese

上图的 :id:,我也想用两个汉字对齐表示,但还没想出来

2 个赞

是的。还能将源码生成竖排彩色的满是古风气息的图片 :grinning:

易语言……一言难尽。

中文在表意上的丰富性远超英文,只要不陷入愚蠢的西化陷阱里,想要用中文表达任何英文的逻辑以及程序代码的逻辑,乃至高层次的抽象,是易如反掌的。相比之下,英文在这方面就会显得生硬许多,没了那股身为万物之灵长的精气,好像睡眠不足一样。

大家肯定能举出不少所谓“中文做不到”的例子。这里我推荐大家看看余光中老先生的这篇文章,就会发现不是中文做不到,而是咱们受到外语的不良影响,错用中文、陷入思维误区了而已。多提升中文素养,对我们的日常生活和职业需要都是有极大帮助的。

那个id,我觉得你可能陷入了一个小误区 :rofl: 你是想说“标题”上方那个“id”嘛?它是和“标题”平级的,还是“标题”隶属于“id”呢?

id的全程identification,是“身份”的意思,“标题”相当于名称,身份怎么能隶属于名称呢?“id”的另外几个通行的用法有“名称”、“编号”、“标识”等等,它们也不可能隶属于“标题”,这在英文中也是不对的。要是id和标题平级或隶属于标题,那我举的这几个两字称呼就任君采撷咯~

其实我个人认为,用emacs当DOM多少有点捡了芝麻的感觉。html的很多东西,比如canvas什么的,emacs暂时做不出来,这也不是emacs的使命。至于其它的,纯用elisp也能做出来的。我就不多妄加品评了。

反正我用得很开心,诶嘿嘿嘿 :heart:

这种描述观点的方式,在emacs中文社区来说,是不太合适的。

1 个赞

这个id源自数据库里的id字段,就我所见过的所有稍微复杂点的web程序的数据库表结构设计,都会有一个id自增字段,自动生成不可重复,作为某条数据的唯一标识。不可修改(一修改其它引用这条数据的就出问题)。

因为我希望是可以修改和自定义,就没有采用随机生成的办法,结果大部分情况都不知道写啥 :rofl:

一般cms系统(如wordpress),写了一遍文章要生成文章访问地址url,通常不会将文章标题作为地址,因为标题太长和标题会被后续修改。而是将id作为地址,这样来看应该是“标题”隶属于“id”.

如果自动生成那可以用"编号",但非自动生成;“标识”又感觉是某种特征体现不出id的不可重复属性(可作为访问地址)。

突然感觉可以用"指针"

1 个赞

是这样啊。不过我觉得这样的话用编号也可以,“编”出来的号嘛ww 诶呀忽然感觉我好幼稚啊,对不起!睡了睡了,晚安~

1 个赞

如果操作拼音,你可以看看 pyim 的代码,里面有拼音的操作函数,毕竟拼音输入法嘛,不过没有声调

1 个赞

诶,原来还可以这样用,和 print 相关的知识我还没有了解过……谢谢!受教了! :laughing:

欸嘿,谢谢前辈!我之前有想过依赖一下 pyim ,毕竟真的太好用了,自从用上 pyim 后我就再也没关心过 tty 和换系统的问题(错乱)……我去好好学习学习!

不过声调的话,我在 cndict 里加了一个 cndict-char-pinyin 的函数,可以快速获取一个字的拼音;另外我还写了一个解析拼音的函数,其实在上面的截图里出现过:

(defun cnrhy-lastn= (n targ str)
  (condition-case err
      (string-match-p targ (char-to-string (elt str (- (length str) n 1))))
    (t nil)))

(defun cnrhy-pinyin-details (pinyin)
  (let ((tune (cond ((string-match-p "[àòèìùǜ]" pinyin) 4)
		    ((string-match-p "[ǎǒěǐǔǚ]" pinyin) 3)
		    ((string-match-p "[áóéíúǘ]" pinyin) 2)
		    ((string-match-p "[āōēīūǖ]" pinyin) 1)
		    (t 0)))
	(tongyun-rhyme))
    (setq pinyin (replace-regexp-in-string "[āáǎàɑ]" "a" pinyin))
    (setq pinyin (replace-regexp-in-string "[ōóǒò]" "o" pinyin))
    (setq pinyin (replace-regexp-in-string "[ēéěè]" "e" pinyin))
    (setq pinyin (replace-regexp-in-string "[īíǐì]" "i" pinyin))
    (setq pinyin (replace-regexp-in-string "[ūúǔù]" "u" pinyin))
    (setq pinyin (replace-regexp-in-string "[ǖǘǚǜü]" "v" pinyin))
    (setq tongyun-rhyme
	  (cond ((cnrhy-lastn= 0 "a" pinyin) 1)
		((cnrhy-lastn= 0 "o" pinyin)
		 (if (cnrhy-lastn= 1 "a" pinyin)
		     9
		   2))
		((cnrhy-lastn= 0 "e" pinyin) 3)
		((cnrhy-lastn= 0 "i" pinyin)
		 (cond ((cnrhy-lastn= 1 "a" pinyin) 7)
		       ((cnrhy-lastn= 1 "[ue]" pinyin) 8)
		       (t 4)))
		((cnrhy-lastn= 0 "u" pinyin)
		 (cond ((cnrhy-lastn= 1 "[oi]" pinyin) 10)
		       ((cnrhy-lastn= 1 "[jxqy]" pinyin) 6)
		       (t 5)))
		((cnrhy-lastn= 0 "v" pinyin) 6)
		((cnrhy-lastn= 0 "n" pinyin)
		 (if (cnrhy-lastn= 1 "a" pinyin)
		     11
		   12))
		((cnrhy-lastn= 0 "[gɡ]" pinyin)
		 (cond ((cnrhy-lastn= 2 "o" pinyin) 15)
		       ((cnrhy-lastn= 2 "[ie]" pinyin) 14)
		       (t 13)))
		((cnrhy-lastn= 0 "r" pinyin) 16)
		(t 17)))
    (cons tune tongyun-rhyme)))

这个函数会返回一个拼音的声调和它在中华通韵中的韵部。如果只想获取声调就更简单:

(defun cnrhy-pinyin-details (pinyin)
  (cond ((string-match-p "[àòèìùǜ]" pinyin) 4)
	((string-match-p "[ǎǒěǐǔǚ]" pinyin) 3)
	((string-match-p "[áóéíúǘ]" pinyin) 2)
	((string-match-p "[āōēīūǖ]" pinyin) 1)
	(t 0)))

这样就可以了。

先放在这里,反正也没啥技术含量,希望能帮到有需要的同学ww 反正过几天我就会把这些功能都写出来,啦啦啦~

ps: 我的辞典质量还是可以的!昨晚整理韵字表,除了那些超脱 GB2312 的奇怪字符(比如这种:𨙸),大多数都可以找到释义……中华文化震撼我一百年 :rofl:

真的,我原本还打算删掉点不常用的字呢,结果一查,好家伙,每个字都有理有据,然后才发现原来是我孤陋而寡闻 :rofl:

哈希表形式的中华通韵韵字表在这里:https://github.com/3vau/cnrhy我打算把这个东东叫做 cnrhy ,目前进度只有一点点qwq……

4 个赞

我发现用 Emacs 写诗还有另外一个实现的维度,就是 API 连上这种 AI 作诗引擎:

AI作诗—诗三百·人工智能在线诗歌写作平台

哈哈哈哈这个我用过,去年我们和诗社几个前辈聚餐的时候还玩这个来着 :rofl: 不过写诗就是自我的表达,得自己把话说出来才过瘾嘛~

那倒是,我比较功用性,就是我觉得 AI 的发展极大的解决了营销素材制作的压力,哈哈哈

我把cnrhy的部分成果合并进cndict了,并为cndict添加了一个查找同韵字的功能,cnrhy现已删除。大家写诗或写歌的时候可以愉快地用cndict押韵了 :crazy_face:

主要是我越写越发现我要做的简直就是一个断句工具+查找同韵字+无情的贴overlay/text-button机器,但无论是写歌还是写现代诗,这些自动检测其实都不太需要;就写古诗需要看下平仄粘对,而实际上写诗的同学可能更用不上……我每次上课走神都直接在卷子边边角角写的哈哈哈哈 :rofl: 所以最后还是只把最关键的找同韵字留了下来~文学嘛,不能太懒人~

3 个赞