Skip to content
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

import modules #100

Closed
wjxjmj opened this issue Dec 18, 2019 · 6 comments
Closed

import modules #100

wjxjmj opened this issue Dec 18, 2019 · 6 comments
Labels
syntax Suggestions to improve the syntax

Comments

@wjxjmj
Copy link

wjxjmj commented Dec 18, 2019

有云《九章算經》者,即名曰《算經》
有云《火炬經》者,其有一術曰「梯度下降」,即名曰「降之」

@BlankRain
Copy link

某有一神 名曰: 九韶,请之
九韶施「大衍求一术」

import sixgod
sixgod.ohmygod()

@oovm
Copy link
Contributor

oovm commented Dec 19, 2019

有书者 名 《九章算数》, 载 「加」 载「减」 载 「乘」载「除」之术也

@oovm
Copy link
Contributor

oovm commented Dec 19, 2019

有一书名曰 《九章算数》, 载 「求和」之术, 今名之曰 「加」

from 九章算数 import 求和 as 

@lanten
Copy link

lanten commented Dec 22, 2019

我注意到书名号的含义非常单一,完全可以将其定义为库或文件的专用符号,可以省略部分关键字,使语法更加简洁。实际场景中更可以在大片的文字中一眼就看出来那些内容是引用自其它文件。

楼上 @GalAster 说的 载 「求和」之术 我认为这个 之术 是多余的,因为 IDE 在读取文件的时候可以自动做出类型推断,可以省略,不然每次声明都要定义其类型,如 xxx 之术,xxx之数,xxx之物,略显繁琐,稍有不慎还会报错。

文件头部的全局解构导入:

「霜白」,「黛绿」,「朱红」,载自《万紫千红》

对应:

import { 霜白, 黛绿, 朱红 } from '万紫千红'

以相对路径导入:

「霜白」,「黛绿」,「朱红」,载自《./定量/万紫千红》

这个 ./../ 有点违和,但是我实在想不出更好的描述方法。

在函数体中动态导入:

吾有一言。载自《./定量/万紫千红》。名之曰「霜白」

@LingDong- LingDong- added the syntax Suggestions to improve the syntax label Dec 24, 2019
@lymslive
Copy link

书名号大善。
但以作者的一个设计思路,除了技术原因不得已保留引号(标识符)外,忽略所有空白与标点符号。
于是我另一个想法,语法技术上将书名号《》等同与单引号「」,但文法书写(代码编写)规范中推荐以书名号括起模块,以单引号括起标识符。

类似这种设计在 Perl 语言中也有,如在定义 hash 时,逗号,与胖箭头号=>是等效的:

my $hash = {'a' => 1, 'b' => 2};
my $hash = {'a', 1, 'b', 2};

在 php 中却似乎只能用 => 不能用退化的 ,表示hash/dict 。

题名话:蓦然发现 perl 的 my 与 wenyan-lang 的“吾有”异曲同工啊,perl 的作者也是语言学家,当年力图使用合乎英语语法的方式来书写 perl 脚本。这主旨思想可以借鉴下。

进一步讨论:模块名与模块文件路径(包含后缀.wy)名又是不同的东西。
模块名相当于标识符(命名空间),应该用书名号或单引号括起,导入时自动在搜索路径中按确定规则查找模块文件。
而模块文件名,则是 string ,应该用双引号括起,不管绝对路径还是相对路径,按其字面意思去加载模块代码。

@antfu
Copy link
Member

antfu commented Jan 29, 2020

Shipped!. Check out https://github.com/wenyan-lang/wenyan/wiki/Importing. Feel free to reopen it if you have any questions :)

@antfu antfu closed this as completed Jan 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
syntax Suggestions to improve the syntax
Projects
None yet
Development

No branches or pull requests

7 participants