duangsuse::Echo
722 subscribers
4.28K photos
130 videos
583 files
6.51K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
duangsuse::Echo
这样就可以写出类似如此的代码: (class std::String (def a_monkey? self.start_with 'm)) (p ('mastermm'.a_monkey?)) ... 不想编了
class 求值第一个参数时就已经获得 (:: std String) (String 类的引用) 了
在 Ruby 里这是 env[:std][:String]
duangsuse::Echo
这样就可以写出类似如此的代码: (class std::String (def a_monkey? self.start_with 'm)) (p ('mastermm'.a_monkey?)) ... 不想编了
list 里第一个表达式永远会被视为 Symbol, 要不然上面的那些定义也会被语法覆盖掉啊(
This media is not supported in your browser
VIEW IN TELEGRAM
Ruby Lime 解释器设计为分三块,
lime 为辅助库,也包含帝递归展开函数
lime/engine 是 Lime 解释器引擎的线程安全封装
lime/parser 是独立的 Lime sexp parser
lime/builtins 是内部默认预定义宏仓库, Lime::Builtins 继承于 Lime::BuiltinsBase, 这个类是 lime.rb 中定义的
require 'lime/engine'
engine = Lime::Engine.new
engine.macro(:fortune) do |body, saying|
puts "#{body}: #{saying}"
end
engine[:picasso] = { name: 'Picasso', saying: '(......wtf???)' }
engine.eval '(fortune picasso::name picasso::saying)'

Picasso: (......wtf???)
熬两个多小时写这些感觉赛艇(
(代码却没写((((
Forwarded from Deleted Account
纯纯写作开源了字符串资源文件:
https://github.com/drakeet/resources/blob/master/translations/en/strings.xml
并求在行的日语、俄语、西班牙语、荷兰语、印地语等翻译,有偿(大概 50 元)或加入翻译贡献者都可以(这样的话也都会赠送免费激活码或兑换码
duangsuse::Echo
熬两个多小时写这些感觉赛艇(
今天标准函数修订了几个并且添加了异常系统
(好像忘了几个变更... 不过应该也够了,算
递归展开定义针对列表并断言列表首项是 .或可以被转化成 Macro 形式
递归展开过程只做以下几件事:
空列表被展开为 nil
首项为 :. 的列表交给内部展开器处理
如果首项是列表,直接处理余下的部分,然后尝试展开首项列表,如果展开结果不是 Macro 则尝试调用结果的 -># 方法(Lime OO 系统里一切皆对象),如果没找到或依然获得非Macro对象即抛出异常
如果是符号,对其前置 '^' 处理然后进行解引用,如果得到的不是 Macro, 尝试转型,如果失败就抛出异常
使用rest对Macro进行展开,然后递归对展开结果求值
接下来处理余下部分
如果首项是符号,对其进行解引用,如果得到的不是 Macro, 尝试转型,如果失败就抛出异常
如果是其他对象,尝试 ->#, 如果失败就抛出异常
接下来使用已经展开的rest对Macro进行展开,然后递归对展开结果求值
很羡慕 drakeet 有那么多时间
我 GeekApk 没时间 Lime 也没多少时间,还是现在开始做吧
#dev #emmm 🌚🌚🌚🌚
Forwarded from Programmer Jokes