New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
发现了一只大佬 #1
Comments
|
你好,欢迎来到我的博客 |
在我看来,网上那些自称会编程的初中/高中生大部分都是
很多我三次元认识的人也不例外,尤其是刚入坑的 OIer。
补充: 😳反正 没有命名规范 指的是 void boynextdoor
void Boynextdoor
void BoyNextDoor
void boy_next_door
void lingjiananhai
void ling_jia_nan_hai
void Ling_jia_Nan_hai
void Nan_hai_nextDoor
|
同 🌝 人吗... 还是向以前一样爱折腾 过几个月搞 {male sign} 完 GeekApk 第一个平台版本 就回来 😄 |
看过了 😃 虽然我也没研究 TeX ... 迟早会的 |
唉,现在时间真的是硬伤啊 😢 |
我 Windows/ GNU/Linux 通吃 😄
|
你那个channel为啥我没法说话啊 |
👆 10d 我这几天睡眠 ( |
🌚 WTF( channel 你不是发布者当然不能说话( |
dalao( |
我差不多死了的 Min (现在还是设计阶段) 也计划手写 LALR ... Jay 估计也不错,但 Min 的主要目标是体积... |
我更喜欢 tg 的良心 |
怕不是体积要报表( |
Min 之所以要分开 Compiler/Assembler/VM 就是为了减小体积 |
一般我觉得 tg 上 nc 少很多 |
你知道 BeanShell core 多大吗...(* |
别胡说,是 Min 汇编( 我不做这种事 |
比较像 Ruby 按我的话说是 Ruby/BeanShell/Lua(LuaJava) 杂交 |
Fixed( |
简单优雅 |
这虽然不是 Min ... ( 结构可以参考 |
(一般情况能胜任就好,我不要求绝对的表现力( |
反正没人( |
真敷衍,bnf和type system都没说【 |
🙈 你没找对地方( |
所以才来找大佬 py 学习一个 🌚 |
我目前没在 QQ 上找到真正的技术 py ( 而且 QQ 对我来说比较不方便,尤其是现在 Debian 使用起来 |
py 吗 |
... 这方面你就别纠结了,我真的不相信 突然间发现又在这破烂黑历史上写了这么多字... 挖粪啊 上面这些我自己说的东西有些是真的有些是假的,求大佬别打回原型(才刚刚膨胀一点就被戳破是很难受的,绝望 上面有些假的信息,说的反话都是为了各种工业界的 dalao 啊! 最后欢迎关注辣鸡人学习不辣鸡科目( 顺带问问 ice1000.org 怎么了... 域名过期了? 🚶🏿 ❓ |
是开通https了。 |
噢,我还以为是没有备案被限制了... 才发现是限制了 HSTS btw. 好久没看 web 运维连 TLS 严格模式都忘了是啥了 |
ice1000/Dekoder@1c25871#commitcomment-25648208 据说是 commit 时间倒转导致 GitHub 误判... 对我的年龄来说的确是刚出生就会写 Kotlin 代码了 2333(话说那时候有我还没 Kotlin... |
好啊,可惜我打印机没墨了,而且 Haskell 都没入门你的 Agda 教程我还没看懂... UPDATE: 刚才以为是 Agda 教程书... 才发现是静态博客系统啊 |
那个commit是在机房提交的,机房电脑的时间是2002年。 |
你搞的这个东西还怪 excited 的,不知道为什么那些 JavaScript 系的前端就没有想出来,可能是平时 imperative 的东西用多了都想不到博客还可以一半用代码一半用自然语言写吧(:P 刚才找了找发现 Haskell 几乎可以说没有专门的中文社区,估计中国能在网上找到的 FP 爱好者还不是很多? 不过我目前也就个 Haskell 入门水平,刚会 multi-branch function 和 pattern matching 之类的 naive 模型 以前在本子上写 imperative 的 Java、Rust 的时候怪无聊的,感觉空间利用率低了一点或者说不是那么自然,现在给还没有被形式化定义的 InScript 弄了个模式识别扩展以后各种递归算法可以说写疯了... 真的是非常好看,没有一点余赘,真香。 Agda 教程打印了现在只是稍微看懂一些铪,可能是命名太不对新手友好了,含义都太隐式所以模式识别搞得我还要猜其意思, 考虑到怕被喷(大嘘)就不 @ mention 了 顺推 InScript 新加入的模式识别多分支函数,当然正确性是非常不能保证的(非常符合 InScript 「自然第一,简洁正确第二」的哲学),而且我也没时间实现这破语言... 而且或许语法歧义很多吧(比 Julia 都多可能),或许很难实现? {- Toy progream: FizzBuzz judger-}
type scannerIter : Iterator<out Int>
type judge : Int => String
type main : String[] => Nil
scannerIter = object : Iterator<out Int>
new def next = gets.parseInt
new def hasNext = IN.open?
judge(x) = when x
% 3 zero -> 'Buzz'
% 5 zero -> 'Fizz'
both 1, 2 -> 'FizzBuzz'
otherwise -> x as String
main(args) = puts << judge <$> scannerIter
{- Toy program: Guessing game -}
using randInt from std.math
main(String[] args): Nil = |>
scope let answer = randInt(1..100)
where while input = gets.parseInt
puts when input where
> answer -> 'Too big'
< answer -> 'Too small'
answer -> "$answer, Just right!"; break
{- Toy program: Selection sort -}
type <A : Comparable<? super A>> selectionSort : (A[]) -> A[]
# equiv
type <A : Comparable<? :< A>> selectionSort : (A[]) -> A[]
scope let opt = |orig@(v, i), b, j| v > b ? orig : (b, j)
where findSmallest(xs) = let (_, res) =
foldWithIndex(opt, (Int::MIN, 0), xs) in res
selectionSort [] = []
selectionSort [findSmallest x in xs] = x >> tailrec
main(args) = puts selectionSort [2, 4, 1, 5, 3]
{- Toy program: binarySearch -}
type <A : Comparable<in A>> binarySearch : |A[]| |A| |Range| Int
binarySearch xs o <srch = xs.indexRange> = |>
let index = srch.mid, guess = xs[index] in when
| srch.len zero -> nil
| guess is o -> index
| guess > o -> tailrec(srch.a..srch.mid.sub1)
| guess < o -> tailrec(srch.mid.add1..srch.b)
noinline pure def <T> List<T>.binarySearch(T obj) = binarySearch(self, obj)
{- Toy program: dfs 在盒子堆里找指定物品,并且获得其路径 -}
data Box = BoxItem[] items, String name
data Item = String name
data BoxItem = Box box ^ Item item
findItemInBox(Box box, String target_name, String[] path = "")
box.items.each |>[:findItemInBox, "$box.name/$path"]
findItemInBox(Item item, String target_name, String[] path) = puts path if item.name is target_name
{- Toy program: Coroutine Fibonacci 序列 -}
using std.sequence
def fibonacciSequence: Sequence
let suspend fib(a, b) = tailrec(suspend b, a + b) in
return new Sequence(fib(1, 2))
def main(args) = puts fibonacciSequence().take(args.first.parseInt ?: 100) 最后还顺便写了个 Haskell 的盒子堆,可惜不知道有没有更好的实践... 感觉有点奇怪 module BoxDfs where
data Item = Box (String, [Item]) | Atom String
deriving (Eq, Show)
findItem :: String -> [String] -> [Item] -> [String]
findItem m v [] = []
findItem m v ((Box (n, xs)):bs) = findItem m (n:v) xs
findItem m v ((Atom n):bs) = if n == m then v else [] |
最后分析结果是这解决方案无效,测试时使用了只有一条路径的,正在找其他解决方案 *BoxDfs> findItem "a" [] [Box("a", [Box("n", [Atom "a"])])]
["n","a"] 嗯,这样倒是蛮正确的 dfs 但是,但是! *BoxDfs> findItem "a" [] [Box("a", [Box("n", [Atom "a"]), Box("bs", [Atom "a"])]), Box("xs", [Atom "x"])]
["n","a"]
*BoxDfs> findItem "a" [] [Box("a", [Box("n", [Atom ""]), Box("bs", [Atom "a"])]), Box("xs", [Atom "x"])]
[]
*BoxDfs> findItem "a" [] [Box("a", [Box("n", [Atom ""]), Box("bs", [Atom "a"])]), Box("xs", [Atom "x"])] 假若在第一个 Cons 能找到 Atom,就能正常返回正确的结果,反之,即使下一项有嵌套此 Atom 也不行... 晕 当然,我很好奇为啥 Haskell 不让我这么写... 歧义? findItem m v [] = []
| ((Box (n, xs)):bs) = findItem m (n:v) xs
| ((Atom n):bs) = if n == m then v else [] |
你对guard的语法理解有问题 |
我不是对 guard,是想(对于这种情况)弄这样的语法糖 a b c d
| x y
| z w 等于 a b c d
a b x y
a b z w 因为重复看起来有点烦了... 所以我甚至(在 InScript 里)把 Kotlin 里只作为方法标记的 tailrec 搞成了递归简写,即使使用 fold op v [] = v
| [x, ...xs] = op(x, tailrec)
fold op v [] = v
| [x, ...xs] = op(x, tailrec(xs))
fold op v [] = v
| [x, ...xs] = op(x, fold(op)(v)(xs)) UPDATE:我去确认了一下 Gurad 的定义 here 其实我本来不管这个叫 guard,之前学 Rust 的时候勉强记得有这个名词 不过后来是为了方便看了很多代码并简化产生的 InScript 语法,其实更类似伪代码因为没有形式定义,虽然预备好进行或许不 CFG 的形式化定义 Haskell 值得学习一下,不过 Haskell guard 的附加特性感觉可以看情况抄一点,就怕找不到时间实现了 |
你是想抄Idris的with abstraction的语法?这可能需要你弄下Layout。 {-# LANGUAGE LambdaCase #-}
bla : Int -> Int -> [Int] -> ()
bla a b = \case
[] -> rua
(a : as) -> ora |
不敢,Idris 我几乎还没见过 上面说了 InScript 本来是基于那个垃圾 Lite 扩展一点语法和特性(诸如 block crossinlining, infix notation, extension function)等设计的,我设计时就是民科看哪块代码不爽就简化一下再添加一个对应文法,顺带从别的语言里抄点东西过来,很多模式之前根本不知道,啥时候准备规范化一下... :( 另. 上面的 但 上上面的 binarySearch xs o <srch = xs.indexRange> = |>
let index = srch.mid, guess = xs[index] in when
srch.len zero -> nil
guess is o -> index
guess > o -> tailrec(srch.a..srch.mid.sub1)
guess < o -> tailrec(srch.mid.add1..srch.b) 因为 |
你这个语法好垃圾啊,不喜欢 |
Thanks
毕竟我现在比较菜,人的审美都是随姿势程度变化的 最后一个可能看不到的 btw https://ice1000.org/gist/rina-spider-zhihu-stu/ md } catch(e) { process.stdout.write('\x1b[31m FAILED\x1b[0m\n'); continue; } 貌似编码有问题(弄错了,看到 escape 字符和红框框就以为是错了,其实是故意的(ANSI 色彩控制)) |
所以你们是在玩自己设计的一套语言? |
去学习些好点的语言啊。别整天抱着拖人类后腿的语言看了。 |
当然啊,我现在就在学 Haskell 嘛,不过没有时间碰电脑所以学得慢罢了,但并行编程、底层二进制编译原理递归算法逆向工程和稍微不那么弱智一点的 OO 类型系统都有书有本子所以可以一起学 等学到理解「知其所以然」 Haskell 的程度就会再学 Agda 系语言的,可惜我现在连
嗯,准确的说是我在玩,而且我都不知道这语言的文法到底能不能做出解析器来,因为 indentation matters 太鬼畜了,而且 |
|
我也是现在才知道有 Literate Haskell 这玩意 这... 不是 TeX 么 -- 打住,是 TeX,不过的确是 Literate Haskell... ( 顺便问问(请,如果有概念上的错误就是我太菜了,求轻喷),
然后如果是,它们能不能“倒着”逆向运行呢?(没错,从王某的博客上看的 dependent type 是什么(ps. 这个有点伸手了 USTC CS 系一 type safe printf (当然作者明显没有编译过此代码示例,因为我使用 C++17 都 CE...)代码示例上提到了几种 PLT(类型理论)的概念 value -> value:function
type -> type:generic
value -> type:dependent type
type -> value:parametric polymorphism 然而,某 Kotlin 教程里说 generic(Kotlin 里的泛型)就是 parametric polymorphism (画上等号地
所谓动态作用域知道了是时序的作用域(貌似),但静态作用域最后好像没有讲 |
目前唯一有关的回答... 其他的估计都一脸蒙蔽 我类型理论现在是儿童都不及的状态,函数式理论和 Haskell 还没怎么理解... 定理证明在学就是了,昨天上午看了一个上午写了十多面草稿也才是到勉强猜出 (主要还是没有啥时间去理解一大堆数学性的东西,干货多难消化要时间,然而还在国内上高二的我一周里只有半天可以碰到电脑,而且甚至因为要处理 Telegram 的输入消息以及在 Telegram 频道里讲点笔记都没时间看这些玩意,只能慢慢学) 至于 Agda 看你那点示例代码看了很久算是大概认出类型签名啥意思了,可惜还是不知道 (这时候一大堆闲杂书籍一起学的优势就体现出来了,虽然看过不一定就会但至少能知道内容大致在哪,这样遇到没详细讲的玩意总是能在别的书里找到讲解和类似的内容,比较容易做到建立关系学起来也不容易忘) btw. 什么是 Refinement Type? - 兴趣使然千里冰封的回答 - 知乎 div : (a b : Nat) -> b !== 0 -> Nat 我之前一直以为 在区分
|
顺便推荐终于放假的今天在 Telegram 上看到的一张图,因为觉得很有意义就自己又画了一份,自己 Inkscape 画的那张不是多严谨,大概看起来像而已 和一 beizer 曲线博文 |
... 我也是你发文讲这个了之后才知道 Layout 是代码缩进 Layout,或者说代码逻辑布局的... 看来这个的确是很需要经验和直觉,要不然各种没给定义也难找定义/定义容易混淆的东西就像英文句子里不知道其意思的词一样会影响到句子的理解 ... 我们数学课里都已经学会用到这种能锻炼人类脑力的机制 implicit definition 教学方案了,这个 ∑ summation 符号 TMD 从来没给我们模式识别定义过就到处在用,Well, good. Have a nice day. 你那个新发的二维文法的文章是讲这个的... InScript 虽然是在我基本不会 Haskell 的情况下设计的(虽然基本都是伪代码),但其实二维语法很像 Haskell... starPlatinum = \case
a -> \case
e -> f
_ -> __IMPOSSIBLE__
c -> d
starPlatinum = \case 就是类似 InScript 里的 = |>
不过因为 when 文法上和 case of 有区别所以没有可比性,只是作为例子
当然也有可选缩进
if 1 == 1.succ { never } else { println } Layout 的部分概念以前我在写垃圾 Lite(最后因为我太菜了不会写 recursive descent method 的 parser 而报废)的时候就考虑过,不过 Lite 就垃圾多了,它没有『可选』这一说(就是 Python 式的必须换行,缩进)并且把二空格而不是一空格视为一个 Level(内部名称 indent,不过我当时好像误写为 ident 了) 不过 Lite 当时的实现思路是「CFG 转化」,因为 Lite 导致词条解释依赖额外上下文的只有缩进文法一个而已,所以我选择在内部增加 最后我花了一天多没能设计出那个算法来(我当时称之为「 def nope()
if true
if false
print 1
elif true
print 2
else
print 3 展开为 def nope()
if true
if false
print 1
end
elif true
print 2
end
else
end
print 3
end
end 最后最好的结果,直到今天我发现了是因为我没有问『这行后面会不会跟一个 block』之类的简单问题... |
什么辣鸡 |
https://agda.readthedocs.io/en/latest/getting-started/tutorial-list.html#introduction-to-agda |
考古现场 |
麻了,你把这翻出来,我简直想自杀了 我竟然和这种人讨论了这么久技术 我自裁 |
@ice1000 不知道你们啊,我是今天又看你的博客,一看,emmm,在想是不是之前看的啊,所以就来考古了(狗头保命,溜了溜了) |
考古😂 |
🌚 在看 gh 更新时发现之前因为 "中文 C#" 事件 #csharplang/993 关注的 @Glavo
Star 了一个 JVM 程序设计语言的 repo https://github.com/lice-lang/lice
看看居然是函数式 Lisp 方言! 后来还发现是中国人开发的??? (虽然之前那个 lemon-lang 也中国人
后来发现居然... 是高中大佬??? 于是找到个人博客发现是 真·大佬_ ... 而且还是 死宅 🌝
@ice1000
看看 Github 主页的... 怕不是 5 岁就??? wtf 虽然最近两年才有真正的项目
忍不住想到了我寒假时的 https://coding.net/u/duangsuse/p/MonkeyVM , 虽然现在无法看那时候的代码
而且 🐒 语言 又是低级语言
(ps. 我真的惊讶了,虽然现在还没有一年吧,没想到他的博客名 "IR" 我居然在看到谜底前能猜到是 "中间表示 Intermid Repr, 虽然当时大概最先想大概是 MS
IL
(当然我现在还不会写... 虽然我英语很能记单词)"总算找到一个同为低龄研究 "高级" 食物的dalao了 (因为有别人那 @drakeet 之前说的一些大概觉得我应该先 好好学习 那些书你看不懂... 这样的话就影响少一些了) ,
虽然之前也交到不少前/后端
(以及 @losfair , 不过可怕的是这个... 居然还研究过地图生成 (之前计划的有个类似生存战争的游戏用到,死想不到怎么做 (当然是空想因为想碰电脑不容易)),总之学得很杂和我差不多 🌚
中午没有时间就没注重排版了... 希望能交上 py XD( 可惜他应该不在 telegram.me 吧... 而且我现在也不能上了
The text was updated successfully, but these errors were encountered: