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
熬两个多小时写这些感觉赛艇(
(代码却没写((((
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
QPhotorec 好像不错 #emmm #backend #Learn
Forwarded from iVanilla 自然科学 & 神秘学实验研究部 (iVanilla)
我使用的恢复方法是:https://daily.zhihu.com/story/7813372

(这软件的 Linux 版本的注册码或者破解版找不到,我考虑在 PE 下用 Windows 版来恢复数据)
Lime github.com/duangsuse/Lime vs. Lice github.com/lice-lang/lice

; lime standard library is loaded automatically
; print a string
(print "Hello " "World" "\n")
; in lime
(print 'Hello 'World '\n)
(puts "Hello world")

; travel through a range
(for-each i (.. 1 10) (print i "\n"))
; in lime
('(.. 1 10).each' (do (i)
(puts i)))

; define a call-by-name function
(defexpr fold ls init op
(for-each index-var ls
(-> init (op init index-var))))
; in lime
(def fold (ls init op)
(ls.each (do (index-var)
([]= LENV init (op init index-var)))))
; 你可能很好奇 def 里面的 init op 什么的是哪里来的,因为 Lime 没有作用域
; 在填充宏参数的时候他们会被内联到每个非 (# ...) (就是宏内部的宏,那应该在展开时填充) 里的引用中去
; 某次改正了一个东西

; invoke the function defined above
(fold (.. 1 4) 0 +)
; in lime
(fold (" a b c) 0 r)

; passing a call-by-value lambda to a call-by-value lambda
((lambda op (op 3 4)) (lambda a b (+ (* a a) (* b b))))

; to define a call-by-need lambda, use `lazy`.
duangsuse::Echo
Photo
😂 开了一个下午一个晚上 #life #emmm
duangsuse::Echo
内部定义的宏: -> define -? defined? -x undef <- read . send => hash # macro : as_symbol :< back_symbol :' as_sexp ' as_array " as_string_array ~ sequence ~~ must_sequence ` loop `` must_loop ? cond % typeof :: index ::= indexeq ext< loadext ext> unloadext require…
Lime 又双有新变化了....

新内部函数定义
~> let
= equal
extern extern
extern-query extern query
## object-id


常量
self
args
LSTACK
$^


* 可能又丢失了一些变化.. 没办法 记这些东西也不容易 🌑
* 类库文件结构还有变化
* 新特性是支持函数作用域, 为了解决以下问题被迫加入的(还有额外好处):

(def puts-in-stream (stream data)
(stream.puts data))

^ stream 会被计算为 nil, 原因是顶层作用域根本不存在那个符号,stream 参数实际上没有意义。

更严重的:
(class A
(attr simple)
(initialize
(self.simple= 'sss))
(def puts_sss
(@ self.simple)))
(-> a_obj A.new)
(a_obj.puts_sss) ;-> nil

^ self 根本不是 a_obj !!!!

(根本不能在 Symbol 里填充 self 的引用,即使这么做也是不应该的)
我的解决方案是完全加入基于函数展开的作用域 🌑, 具体就懒得说了吧