修改类 Mathematica 语法 以变得更好读, 更容易写 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
einsxiao
V2EX    问与答

修改类 Mathematica 语法 以变得更好读, 更容易写

  •  
  •   einsxiao 2019-10-15 17:58:55 +08:00 1445 次点击
    这是一个创建于 2276 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚才发了一个贴, 但是不知道被我操作到哪里去了. 抱歉再发一次...

    rt. 最近在做的 Pondnote( https://pondnote.com 项目,其中 Pond 语言语法主要参照了 Mathematica. 当然, 有很多自己的改进, 举个例子, 点操作符, l.PushBack 可以把整个表达式发给 List 函数,完成下面操作.

    l = {1,2,3} l.PushBack[4] # l 的新值为 {1,2,3,4} 

    这一类定义有一个统一范式, 因此可以给任意函数定义点操作, 譬如 Matrix

    mat = Matrix[{ {1,2,3},{1,2,3} }] # 初始化 mat.Transpose[] 

    其中 Matrix 是原生的 C++矩阵结构(这部分没有整理过来,pondnote 中不可用, Linux 版本有实现) #################################

    以上是已经完成的, 目前有一个语法结构上设计改动的想法 (主要原因是, 一直以为已经习惯了方括号. 但在不同语言间频繁切换的影响下, 这种方块号的用法, 慢慢变得有些有点不顺眼了. 主要缺点是, 写稍微长一点的程序的时候可读性太差, 并且写法习惯和主流语言差别太大 于是想做一些修正)

    保留方括号的同时, 同时使用圆括号作为函数调用

    f(x_) := x^2 # 函数可以使用圆括号 f (a b) # 但是圆括号必须紧跟作为函数头的表达式(中间不能有空格制表符等), 否则视为乘号 l = {1,2,3} l.PushBack(4) # 这样就比原来的写法,看起来自然一点, 方括号总感觉很方.. 

    也就是说, 原来的 f(a+b) 表示乘积的方式不在生效, 中间必须增加空格或者添加*号才能表达乘积的意义.

    引入语句块函数体的概念, 从而可以使用下面的形式

    # if 语句 举例 if cond: #或者 if ( cond ){ sent1; sent2 #sent2 和 sent3 不再是相乘关系, 而是和最上层语句一样的是一个语句块 sent3 else: #或者 }else{ sent1 sent2 #或者 } end 

    这段翻译成 FullForm, 类似于

    If[ cond, Block[ CompoundExpression[ sent1 ], sent2, sent3 ], Block[ sent1, sent2] ] 

    求大腿意见,

    1 条回复    2019-11-22 00:30:28 +08:00
    einsxiao
        1
    einsxiao  
    OP
       2019-11-22 00:30:28 +08:00
    https://pondnote.com/publication/158c6142365ee796
    自问自答, 自己 high
    实际感觉还可以.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5667 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 02:37 PVG 10:37 LAX 18:37 JFK 21:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86