Archived messages from: gitter.im/red/red/Chinese from year: 2017

biuuw
14:38想问一下,学习red 有没有中文的学习手册?

qtxie
01:34@biuuw 目前没有官方文档,不过有些小伙伴翻译了一些

bingdufenqi
04:03请问有链接之类的吗,教程的链接
04:03好喜欢这个语言,好想学喔
qtxie
06:42doc.red-lang.org
06:44Red语言的基础教程还没有写,可以参考Rebol的[教程](http://www.rebol.com/docs/core23/rebolcore.html).

JerryTsai
16:01也可以参考蔡学镛的书「编程ING: 人人都能学会程序设计」

wzy2687
00:46目前red 在64bit的linux上不能直接运行. 这个有改善计划吗? @qtxie
00:52想在linux下把 red嵌入c语言程序中, 但是red依赖于 32bit的一些库. 感觉不方便. @JerryTsai @qtxie
qtxie
02:02@wzy 在Red 0.7发布以后,会考虑64bit的支持。
wzy2687
02:03@qtxie 谢谢. 能看到各个版本的大概时间表吗?
qtxie
02:03https://trello.com/b/FlQ6pzdB/red-tasks-overview
02:05应该今年是没有时间了,能做完0.7就很不错了
wzy2687
02:08@qtxie 理解. 毕竟开发人员不多.

Oldes
08:48Hi there... we are releasing our game Samorost 3 and our contact in China, who is applying for government game id told us, that even names must be translated. To me it looks like a nonsense, but we received this translation. Could you please tell me if it is ok? As all this text are just names, I believe it must look strange for you to read it in Chinese, isn't it?
08:48[![s3-credits.png](https://files.gitter.im/red/red/Chinese/1Qis/thumb/s3-credits.png)](https://files.gitter.im/red/red/Chinese/1Qis/s3-credits.png)
qtxie
09:38@Oldes It's ok. :smile:

WayneCui
12:24http://mp.weixin.qq.com/s/r3reWJqaq0yvh1CmuROduQ
qtxie
13:45:+1:

youyangzazu
14:43刚下了Jerry的中学生编程
14:50说 设字 是一种字面值,这句没懂
defp
15:08好冷清
youyangzazu
15:10那就让它热闹起来呗
Blocode
16:00@youyangzazu "设字" 就是 set-word! 数据类型的中文翻译,就是设定单字的意思。所谓的字面值,就是英文 literal,意思是"字面上的意思"。
16:03看书看得好快,居然看到"设字"的部分。
youyangzazu
16:18@Blocode 我是不明白为什么设字是字面值,看到后面说paren和block也是字面值,就更迷糊了。
16:19书粗略看完了,最后几个例子没实际输入,明天尝试
16:27相对于GUI,我更想了解Parser
Cifer-Y
16:46从中学生编程过来的~~~ 😆
16:50red 是没有全局 command 吗?换个目录就要下一个新的 red ?
Blocode
19:40如果要执行的脚本文件 (例如clock.red) 和red.exe在不同的目录(例如是放在c:\users\lee\my-code),就要用这样的方式执行: >> do %/c/users/lee/my-code/clock.red
19:44或者也可以设置操作系统的PATH环境变量,让系统自动搜索到 red.exe 。

qtxie
00:17@youyangzazu 字面值通俗来讲就是:能直接写出来的值。比如:
整数:     123
字符串:   "Hello"
字:       abc
设字:     abc:
00:20有些值是没法直接写出来的,比如:图像(image!),需要用make函数来构建:
make image! 100x100
00:22@Blocode 目前放PATH里运行会出错,下个版本会修正。
00:25@Cifer-Y 目前有两个方式:
1. 像 @Blocode 说的,用 >>do %你的文件路径.
2. 每一个目录里复制一份red. :sweat_smile:
charkz
01:02大家好,看中学生编程来的~
83490091
01:52哈哈,我也是来看中学生编程来的...red终于发布新版本了....好期待1.0的出世!!!!!!!
Zjhyang12335
03:32刚看到中学生编程
03:32有人知道是谁写的吗
03:34怎么下载最新版本??
03:34是0.6.3吗
g1eny0ung
03:53最新版是0.6.3的
03:53http://www.red-lang.org/p/download.html
03:54这里下载
Zjhyang12335
03:54red-lang.org被墙了
03:55不过已经在http://red-lang.qiniudn.com下了
g1eny0ung
03:56:smile: 嗯嗯
Blocode
05:21@Zjhyang12335 我想你问的 "最新版" 是指中学生编程这书是否0.6.3是最新版。是的。这书昨天晚上刚刚发布。下一个版本的书应该会是 0.6.4,书的版本號和 Red 语言同步。
Zjhyang12335
06:00为什么要放用户文件夹里还要改名??
superkunn
06:48虽然过了中学生的年龄了,但是我这把老骨头也要学一下
charkz
06:49同老同老,,老年编程初学者。
Zjhyang12335
07:22Red也是面向对象?
sphawkcn
07:47red确实是人丁稀少啊。
lgdxx
10:17@superkunn @charkz 一起学习
chenge
10:31Red不错,有特点
wjlmnop_twitter
11:48老年编程初学者。
qtxie
11:51http://red.github.io/
有需要的童鞋可以在这里下载每日构建版本red-latest
Gongjiangege
12:00[提问]依照《中学生》,mac环境,red同目录下建立ex01.red脚本,然后>> do %ex01.red
*** Access Error: cannot open: %ex01.red
*** Where: read
*** Stack: do-file
wjlmnop_twitter
12:01初学者。
lgdxx
12:01@Gongjiangege mac下怎么样我不知道,但是我在windows下一切OK
Gongjiangege
12:09对这个文件chmod也没解决。
Blocode
12:23@Gongjiangege mac 版本在的路径处理上有问题,你可以用 >> PWD 看看当前的目录为何(这个目录可能和你的 red 执行文件所在目录不同),然后把你的脚本放在这个目录下,就可以用 >> do %ex01.red 的方式执行脚本了。例如, >> pwd 告诉你目录是 == /Users/justin ,你就把 ex01.red 放到这里。
12:24变成 /Users/justin/ex01.red
12:28**Access Error: cannot open: %ex01.red Where: read
* Stack: do-file** 通常是找不到文件的错误信息。 这时候你可以 >> LS 看看是否在当前工作目录下可以找到 ex01.red ,应该是找不到。
Gongjiangege
12:41@Blocode 谢谢,确实是路径问题,Mac下*.red应放在pwd指向的目录而非简单的和red执行文件同目录下,关于这点可更新《中学生》p12。再次感谢你的帮助。
12:54[请教]延伸问题:如/Users/justin/这样的目录是一个层级很高的目录(类似于C:\users\)里面有许多重要目录,非常不适合管理大量的代码文件,而通常管理代码是保存在自定义子目录。mac 下什么方法可以使得red直接do 这些在其他目录中的代码文件?
g1eny0ung
13:43假设你的代码文件夹是demo,里面有一个main.red文件,然后在demo的同级目录下输入red,然后do %demo/main.red就可以了。
13:48@Gongjiangege 也可以直接用red命令来运行,打开Terminal,输入mkdir demo && echo "Red[] print 1" > demo/test.red && red demo/test.red
13:51第一个命令是mkdir是创建文件夹demo,&&之后的echo是把Red[] print 1输入到demo文件夹下的test.red文件中,**>**可以理解为**输入到**,最后&&之后的就是运行命令了。
Gongjiangege
14:28哦,验证可行,谢谢@g1eny0ung 的帮助。
g1eny0ung
14:29不客气 :smiley:

xjq000814
04:24问一下大家 为什么我打开软件没有出现《《字符啊
04:26没有出现》》
robin4han
04:27要等个一两分钟
04:28是这个字符 >>
04:29# xxxx @ 192 in ~ [12:27:12]
$ /Users/xxx/red ; exit;
--== Red 0.6.3 ==--
Type HELP for starting information.

>>
04:29Like this
xjq000814
04:29它现在显示的是compiling Red GUI console。。。。。
robin4han
04:30Just wait
xjq000814
04:30OK thanks
04:30you are so willing
05:29>> do %clock.red
*** Access Error: cannot open: %clock.red
*** Where: read
*** Stack: do-file
05:29what happen?what it mean?
05:30who know?
g1eny0ung
05:32检查一下clock.red是否存在呢
xjq000814
05:32存在的呀
05:32和red exe保存在一起的记事本
g1eny0ung
05:32错误信息很明了了,访问错误,打不开clock.red
05:34在red里输入一下ls,看看有没有这个文件
xjq000814
05:34>> ls
clock.red.txt red.exe.exe
05:34有的涯
05:34有的呀
g1eny0ung
05:35把clock.red.txt改成clock.red
05:35文件扩展名不对的
05:35应该是这个问题
xjq000814
05:36怎么改啊 我文件夹里保存的好像就是clock.red么。。
g1eny0ung
05:37额。。我windows用的不熟,应该是有个选项显示文件扩展名,然后重命名就行了
xjq000814
05:38好的 谢谢啊
g1eny0ung
05:38或者你直接输入do %clock.red.txt
xjq000814
05:39谢谢
g1eny0ung
05:40不客气 :smile:
Cifer-Y
09:12windows 的 ext 和 filename 好像不是在一起的,改 ext 的时候不能光改 filename 了事
lgdxx
12:07今天把两个练习做完了,慢慢思考一下
12:09如何把写的小程序打包成exe,发给朋友们玩?
Cifer-Y
13:34@lgdxx red -c -t Windows
13:34@lgdxx red --help 就能看到
lgdxx
15:49@Cifer-Y 谢谢

lijianweicode
03:14请问这是这么回事呢?red --help
*** Script Error: --help has no value
*** Where: catch
*** Stack:
JenniferLee520
05:21@lijianweicode 那个不是在 Red 交互环境下输入的,是要在macOS终端,或者Windows命令提示字符中输入的。
lijianweicode
05:33哦哦 原来是这样啊 谢谢😃

lgdxx
01:1925号没有交流,这不科学,RED是一门好的语言,我已经爱上它了
GHwlaw
02:22确实有意思,
02:23及时输出
lgdxx
02:23@GHwlaw 握爪
Cifer-Y
09:45red 在服务端编程表现怎么样啊?
southwolf
09:46连个靠谱的 Socket/HTTP 库都没有。。。别想了
Cifer-Y
09:46哇。 。。这都有你
ixaelo
14:08请问
14:09请问red用什么IDE比较好?
lgdxx
14:09@ixaelo 没听说过专门的,我用的是sublime3
lizheng-s2
14:10不太清楚,我也是刚开始学习red,也想问这个问题呢
southwolf
14:11sublime/Atom/VS Code 都有 Red 语法高亮的插件。曾经有几个 Red 专用的 IDE 不过都不维护了
ixaelo
14:11谢谢 我去试试

mahengyang
06:34中学生编程来的
06:38red的中文教程好少啊

mahengyang
06:36怎么在draw函数里写循环啊
06:36比如画20条竖线
qtxie
06:50@mahengyang 把你的绘图指令放到draw block里面:
x: 10 y: 10
draw-cmds: make block! 100
loop 20 [
	append draw-cmds reduce ['line as-pair x y as-pair x y + 80]
	x: x + 10
]
view [base 210x100 draw draw-cmds]
mahengyang
06:53@qtxie 谢谢,原来是这么玩的呀
xiaohong
07:07probe 函数什么意思呢? 有没有所有函数的文档 @qtxie
07:07print?
qtxie
07:11目前没有,只能参考Rebol的
07:12你可以在google或者bing里搜索 “probe rebol”
mahengyang
07:12’line 像这种语法,line前面加单引号是什么意思呢
qtxie
07:12试了下百度,辣鸡,搜不到
xiaohong
07:12符号
mahengyang
07:13append my-draw reduce ['line-cap 'round 'line as-pair x y as-pair x y + 10]我稍微改了一下,line-cap 和round都需要加单引号才行
xiaohong
07:13@mahengyang 好像和clojure里的'line是一样的
mahengyang
07:14不求值?
xiaohong
07:14应该是避免word被执行,
07:14我猜测是的
mahengyang
07:14reduce的时候才求值
07:14@xiaohong 好厉害呀,clojure也会
qtxie
07:14@mahengyang 对,因为reduce会对block里面的内容求值
mahengyang
07:15我一直在找一门语言,可以教初学者
07:15自己写着也要顺手
07:16red有图形化的操作,看着不错
qtxie
07:17也可以用compose来改写:
append my-draw compose [line-cap round line (as-pair x y) (as-pair x y + 10)]
mahengyang
07:18Returns a copy of a block, evaluating only parens.
07:18这个好,只对括号内的求值
07:19clojure就没有这个功能,还要自己写宏
07:20像compose这种函数,单看文档不知道有什么用,结合具体的案例,一下就明白了
08:13
node: declare struct! [
	father	[c-string!]
	suns	[block!]
]

declare 不能用吗?
08:13 *** Script Error: declare has no value
qtxie
08:18declare是Red/System里的关键字,你把它跟Red混在一起了
mahengyang
08:19我看的帮助文档里有结构体
qtxie
08:19哪个文档?
mahengyang
08:19http://static.red-lang.org/red-system-specs.html#section-4.7
08:19Struct! datatype is roughly equivalent to C struct type. It is a record of one or several values, each value having its own datatype. A struct variable holds the memory address of a struct value.
qtxie
08:21这个是Red/System的文档
08:21Red和Red/System是两种语言
mahengyang
08:21还能这样,看名字我以为是System模块呢
qtxie
08:21虽然语法相似,编程模型大不相同。
mahengyang
08:22那red里有类似的数据结构吗?
08:22类似java对象的
qtxie
08:22对,所以如果你要学Red,最好不要看这个文档,不然容易把自己弄晕
08:24Red/Rebol里有struct!,但是Red还没有实现
08:24如果你要对象,object!应该是你需要的
08:24struct!是用来映射C结构体的
mahengyang
08:26
book: object [
    title: author: none
    show: does [print [mold title "was written by" author]]
]

看起来可以这样子,但是里面的字段没有类型
qtxie
08:27@mahengyang 学习Red,目前没有官方文档,推荐暂时用[Rebol的文档](http://www.rebol.com/docs/core23/rebolcore.html), 95%兼容。:-)
08:28Red是动态类型的,函数的参数有时会声明类型,是为了做类型检查。
mahengyang
08:28好的,谢谢
qtxie
08:30@mahengyang 不用谢,你用过其他动态类型的语言吗?比如python, ruby之类的
mahengyang
08:31用过
08:32用过的,
qtxie
08:39那应该容易理解的,Red也是动态类型的,Red里在运行时改变代码是很容易的:
code: [print "abc123"]
loop 3 [
	do code
	random code/2
]
xiaohong
10:01red1.0 到啥时候才能开发完呢?
OhCoder
13:21问下,现在 0.6.2 支持 Mac下的GUI了吗?
qtxie
14:19最新版,也就是0.6.3支持的
OhCoder
14:37好的。三克油

JackyXk

mahengyang
07:38
g: “a”
num: 2
numbers: make hash! [g num]
print numbers
07:38这段代码打印出来的hash格式不对啊
JenniferLee520
09:101. “a” 要改成 "a" ,因为你用了错误的双引号。2. hash! 后面,[g num] 前面要加上 reduce
mahengyang
09:11我知道怎么用了,hash!不是java里的hashmap
09:11要用map!
JenniferLee520
09:11是的
09:11map 的文档在这里 https://doc.red-lang.org/en/map.html
mahengyang
09:12谢谢啦
JenniferLee520
09:12不用谢
roaming-zen
12:54大家好 ^_^
qtxie
13:57你好 :smile:

valiantplayer
Hantianshui
12:59view [ size 200×200 button "NO" [ unview ] ] 这个表达方法对不对 求大神解答
qtxie
13:44对的,不过你的x不是正常的,所以报错了
13:44
view [ size 200x200 button "NO" [ unview ] ]
Blocode
13:44@Hantianshui 你的 200x200 写错了,中间是X
13:45Pair! 中间必须是英文的X,大写小写都行。
13:46你写成一个长得很像 X,但不是 X 的符号
qtxie
13:46@Hantianshui 奇怪,你在哪里复制的代码?
Blocode
13:47对呀!奇怪,要输入一个这样的符号,反而不容易。
13:49这个奇怪的符号 Unicode 是 0x00D7

oppih
07:34在很多地方想输入这个x,不知道怎么写的,好奇一下
Hantianshui
13:41@qtxie 在那本书上
13:42哪位大神有最新版的RED 程序 跪求

mahengyang
01:55red和rebol的文档真是差劲
01:56连字符串的连接和截取都没有啊
qtxie
02:32red根本就还没有文档,rebol文档里我记得有讲解的
mahengyang
02:33rebol也没有
02:33http://www.rebol.com/docs/core23/rebolcore-16.html#section-2.11
02:33这是rebol里的字符串
02:33扯一大堆废话,没有一句说到点上的,老外的思维真是奇葩
qtxie
02:35你跳过了太多章节,http://www.rebol.com/docs/core23/rebolcore-8.html
02:37还有 http://www.red-by-example.org 这个网站只是个red爱好者个人做的,老实说做的不好,初学者慎用。
mahengyang
02:37好吧
02:38原来string类型的文档和string function是分开的
qtxie
02:42俗话说心急吃不了热豆腐,看文档怎么说也要先粗略的通读一遍吧,直接看了一章就下结论,不明智。

mahengyang
01:51发现一个red创始人写的ppt,原来在创新工场啊
http://doc.mbalib.com/view/52394c0f105c3a5f78c2fd0c638360ff.html

wzy2687
07:18@qtxie red 如果读大文件(>5G). 如何处理. 有例子吗?
qtxie
07:38@wzy2687 目前的只支持简单的IO操作,要读这么大的文件要等0.7才行。
wzy2687
07:39@qtxie 谢谢, 那就先等吧. 另外问下, 现在全职开发red的有多少人?
qtxie
07:40如果你熟悉系统API,也可以自己封装内存映射文件的系统API,就可以读取大文件了
07:42@wzy2687 开发目前2个人,还有个实习生
wzy2687
07:43神人
mahengyang
07:44厉害呀,看了github的提交,有四个人活跃一点,不过最近只有创始人和谢晴天
wzy2687
07:46red战线拉得好长, 但是又没有否方面突出能上产线的.
mahengyang
07:48用red写了个小程序,感觉还不错
https://github.com/mahengyang/famtree
wzy2687
07:49@mahengyang 感觉不错啊
07:49图片部署,是自动的吗?
07:49图片布局, 是自动的, 还是自己的算法
mahengyang
07:49自己写的算法
07:50red最让我惊讶的是生成一张图片居然只要一句话
save %family-tree.png draw
qtxie
07:50毕竟才0.6,到1.0了应该会好很多。不过现在处于低版本的状态对想学Red的人有好处,可以一直跟进了解,到1.0的时候,就是高手了。:-)
mahengyang
07:51不像java,先整一堆inputStream,再来一堆buffer,
07:51@qtxie 这确实是理想中的语言
qtxie
07:52我如果不是在大概0.2的时候就接触到Red,现在也不会做这个工作了,那时Red的代码很少,还比较容易看懂。
mahengyang
07:52感觉你们做的事情才是人生应该为之奋斗的
wzy2687
07:531.0 估计要2-3年后了. 不过还是支持 red.
qtxie
07:58@mahengyang 程序不错!:+1:
07:59@mahengyang 更Red的做法,是把node用block表示。
mahengyang
08:00去年就想写一个家谱树的程序,一直没有找到合适的语言,看到了red刚好试试,蛮好
08:00node也用block的话,取的时候是不是不方便呀
qtxie
08:01不会啊,block很多用法的:
>> blk: [a: 1 b: 2]
== [a: 1 b: 2]
>> blk/a
== 1
>> blk/b
== 2
mahengyang
08:02不错,好的,我改一下
08:04
node5: [
	father: "马泰亮"
	suns: ["马守清"]
	generation: "泰"
]

node5:  object [
	father: "马泰亮"
	suns: ["马守清"]
	generation: “泰”
]

这两种写法好像没有区别,我直接把object删掉,程序照样运行
qtxie
08:08haha~
08:09证明这个地方用block没错
mahengyang
08:12
node2: [
	父: "马端如"
	子: ["马泰心" "马泰德" "马泰功" "马泰名"]
	字: "端"
]

用中文也可以作为key,厉害呀

wzy2687
07:12red 现在能写tcp 客户端或者服务器吗?
07:12red 现在能写tcp 客户端或者服务器吗? @qtxie
qtxie
08:22@wzy2687 不能

WayneCui
10:28Win 10支持吗?Compiling compression library...
*** Linker Error: locked or unreachable file: C:\ProgramData\Red\crush-2017-8-3-49893.dll
DavidFeng
14:12我准备业余好好学习学习red了, 最近了解了很多red的背景知识. 很早以前就听说rebol了,可惜一直没认真学过. 前段时间看到 微信公众号 程序人生 的文章<red,不红不专,但性感>, 决定好好学学red
qtxie
21:24@WayneCui 可能是杀毒软件在作怪
21:26@DavidFeng 欢迎欢迎~

WayneCui
01:27@qtxie 搞定👻
DavidFeng
10:12red语言的vim语法高亮插件现在还没有吗? 我找了一下没有找到, 如果没有的话, 我可以写写
OhCoder
10:24@DavidFeng 还没有,只找到了一个rebol的,我也是 vim 党……
DavidFeng
12:23@qtxie 和创始人,你们都用什么ide?
12:24@qtxie 你们现在主要只有两个人开发吗?为什么公司不再招些人呢
12:28@OhCoder 我准备抽时间写一个vim的语法高亮
qtxie
12:33现在还没有IDE, 我们用简单的editor
DavidFeng
12:33那你们都用什么 editor/ide?
qtxie
12:35Nenad用TextPad,我用的EverEdit
12:36@DavidFeng 你能写一个vim的语法高亮,那是极好的. :smile:
12:39现在开发主要需要用Red/System, 还要熟悉Red的整个架构,熟悉Red Runtime的代码,这样的人不好找
12:40而且我们也没有太多 :dollar:
DavidFeng
12:42嗯~ 我准备业余时间全部用来学习red了,等对red有了解之后,就先从red的语法高亮插件开始. 学会red之后,希望以后也能参与进red的开发.
qtxie
12:44@DavidFeng 灰常欢迎 :heart_eyes:
DavidFeng
12:45我以前学过Haskell, 也用其做过一个游戏服务器项目,写过一点小工具. 现在red带给我的感觉比当初的Haskell更好,很有学习激情
qtxie
12:47高手啊,Haskell这么烧脑的语言都玩过,Red还是比较简单的
DavidFeng
12:48你学过Haskell吗?其实简单写点东西也没那么夸张的.我很菜的~
qtxie
12:49学过一阵,学函数式编程的时候看过他的文档,不过没实际用过
12:51以前用的比较多的就C/C++和Python
DavidFeng
12:55学习Red之前,我感觉最不可思议的就是Red强大的DSL能力,貌似我还没有在别的语言中见到过这么强大的DSL, 因为还不理解,所以感觉特别不可思议,偏偏你们都还说red很简单.
qtxie
12:56核心功能简单,类似Lisp,但可以创造很强大的功能
DavidFeng
12:57Red和Lisp有什么关系和区别? 是不是就是不使用S表达式的Lisp?我看到介绍上说Red
qtxie
12:58语言的基本概念和语法,如果好的老师教,一天应该就能学完了
DavidFeng
12:58也像Lisp一样有同像性, Lisp的我知道,但Red的我还不清楚
qtxie
13:00对,像lisp一样的同像性。不同主要是语法上吧
13:01Red里的block! [ ] 跟 Lisp的 parentheses ( ) 有异曲同工之妙
DavidFeng
13:31看了一下这里的教程, 会赋值,定义函数, 调用函数了, 对block有了一个概念了 http://www.bitbegin.com/
cwt8805
14:43总算找到组织了,遇到一个问题想请大伙帮忙解答一下。我要进行一个post请求,代码如下:
qrcode: write/binary append getQrcodeURL accessKey [
				POST [] append append append append "{^"path^":^"pages/index/index?deviceSN=" sn/text "&devicePassword=" password/text "^"}"
			]
write/binary %qrcode.jpg qrcode

运行出错:
*** Script Error: invalid argument: append
*** Where: write
*** Stack: view do-events do-actor do-safe

已经知道是POST []后面的四个append造成的,后面加一个字符串字面量没有问题,但是我要post的数据是需要改变的,有好的建议吗,谢谢。
OhCoder
15:17@DavidFeng 如果能写一个高亮插件当然是太好了。欢迎欢迎!👏
cwt8805
15:31@qtxie 新手初来咋到,麻烦帮忙解答一下,谢谢
JiaChen-Zeng
15:43我觉得因为是 [] 里是数据,不是代码,所以里面不会执行的

qtxie
00:13@cwt8805 可以用compose:
data: append append append append "{^"path^":^"pages/index/index?deviceSN=" sn/text "&devicePassword=" password/text "^"}"
qrcode: write/binary append getQrcodeURL accessKey compose [POST [] (data)]
cwt8805
01:29@qtxie 可以了,谢谢。看来还是得仔细看一下文档,对Red的一些核心概念还是有所欠缺,看几个示例就开始写代码还是行不通的。不知道从rebol的文档开始是否是好的选择呢?http://www.rebol.com/docs/core23/rebolcore.html
qtxie
01:30@cwt8805 可以的,目前这个是最好的选择。
cwt8805
01:52@qtxie 好的,还有个问题。
view [
    sn: field "ET00001" return
    button "click me" [
        data: append append %qrcode- sn/text ".jpg"
        print data
    ]
]

点击按钮三次输出为什么是这样的?
qrcode-ET00001.jpg
qrcode-ET00001.jpgET00001.jpg
qrcode-ET00001.jpgET00001.jpgET00001.jpg
qtxie
02:04@cwt8805 https://github.com/red/red/wiki/Why-do-I-have-to-copy-series-values%3F
02:05red wiki 里有些文章是很值得一读的 https://github.com/red/red/wiki
cwt8805
02:08好的
02:56解决了,所以应该这样做append append copy %qrcode- sn/text ".jpg"
03:25@qtxie 有点强迫症的问题,你发给我的第一个链接在wiki首页找不到入口
qtxie
03:36@cwt8805 在页面右边的pages里面,目前一共有86个pages
03:38一般人确实不容易发现这些文章 :sweat_smile:
DavidFeng
03:57看了rebol的文档,http://www.rebol.com/docs/core23/rebolcore-4.html 感觉rebol Red真是一种设计的非常好的语言, 没理由这么多年都没有火, 也没有其他语言从中借鉴各种特性啊, 像内置 date time email filepath类型及其字面量这些特性,其他常规语言也完全可以借鉴啊.
03:59很看好Red的前景,希望Red早日达到1.0,然后合理推广,在市场上大获成功. 之前就感觉lisp和Haskell这些函数式编程语言和主流的命令式泛型的编程语言很不一样,现在感觉Rebol和主流语言也是大不同的; 不过, 现在函数式编程中的很多特点都被主流语言逐步采纳了, 但rebol感觉影响还太小, 这不应该
cwt8805
06:09@qtxie 点击侧栏中的Show 71 more pages...没有反应
DavidFeng
06:18重新点, 你网络问题...
cwt8805
10:03应该不是网络问题,每次点击都是调到当前页,算了不纠结了。Red如何调用dll动态链接库文件?

DavidFeng
01:56Red/System中没有C语言中的 union, 会考虑加上吗? 我在文档中没有看到
01:57如果C的所有特性都有对应的话, 理论上是不是可以写一个编译器扩展,把C语言项目直接1对1翻译成Red/System? 这样的话引入一些三方库比如sqlite lua red什么的,是不是就可以直接暴力翻译C源码来实现了?
qtxie
02:08也许会:https://github.com/red/red/wiki/Red-System-v2-Wish-List
DavidFeng
02:09哦,原来在这里,之前没发现这个页面. 只看到了reference文档中的一些todo
02:13如果只是和C api交互的话,用union的情况应该非常少. 偶尔有也可以用类型转换来模拟.

mahengyang
10:07@qtxie 你们俩是全职开发red呀
10:07谁给你们付工资呢
DavidFeng
12:43@mahengyang 公开的资料是, 2015年, 全栈科技拿到了创新工场和CSDN投的50万美元投资, 这300万人民币,应该够公司运作一段时间了
12:44详情看red lang官网博客
12:44http://www.red-lang.org/2015/01/dream-big-work-hard-and-make-it-happen.html#comment-form
12:46我今天看 官网博客about页面 13年 RECODE Nenad的视频分享, 讲到 那时run out of money,靠捐款生活, 真是心疼++啊, 这么好的语言和蓝图, 缺没有太多人和资金支持, 那么多大牛参与到red中的确那么少,
12:46还好后来有 这个投资了
12:46@qtxie 你是什么时候开始全职开发的啊?
12:48说错了,我是想说什么时候开始开发的
12:50查了一下,git历史中很早就参与了
qtxie
13:4714年吧

DavidFeng
00:47那你是怎么认识 Nenad 的, 怎么加入的? 能八一下吗? 😆
00:48是网上协作,然后主动联系他的吗?
qtxie
00:52开始是在网上协作,后来他来中国了,蔡学镛引荐我给Nenad。当时我正好从上一家公司离职,就加入Red Team了。:-)
mahengyang
00:53蔡老师厉害
01:04red的代码有很多是rebol写的,特别是测试代码,
DavidFeng
02:07原来是这样~
02:07现在red代码为什么还不能自举呢, rebol写的那部分技术上已经可以用red来完成了吗? 如果不能,还差什么?
02:11是不是自举的优先级不高啊,算了,这个问题其实也不重要. red 2.0, 核心使用red重新开发, 架构设计更先进, 方便添加插件, 这些蓝图实在太吸引人了
13:01@qtxie 0.7的io支持打算怎么做啊,是像gui部分一样,直接调用os的api吗? 打算支持libuv nodejs那样的 异步io吗? 可以用来写服务器应用吗?
13:05red肯定不会依赖libuv这样的第三方库的吧? 现在用户可以直接封装libuv api做服务器应用吗? 现在是不是还没有gc啊? 是不是说red还不能写长期运行 的服务器程序
qtxie
13:05像libuv一样的异步io
DavidFeng
13:06服务器开发这边有个好处就是, 很容易方便小公司小团队直接使用,
qtxie
13:06直接用系统api来做
13:06现在也可以自己封装libuv啊
13:07Red在一定程度上可以手动控制内存的
13:09如果控制的好,很多情况下就算没GC,内存使用也是稳定的
DavidFeng
13:09哦~ 我感觉我问的问题应该可以通过自己的学习来自我回答, 问的多学的少了, 我没有足够知识的话, 你可能不能简单给我讲清楚
13:09谢谢, ok~ 我打算试试封装 libuv, 可能社区还没有人做这个工作,
13:10然后试试用red做nodejs做的事情, 如果可以的话,将来还能应用到工作中,我现在在做棋牌游戏开发, 服务端nodejs typescript客户端cocos creator, typescript js
13:12red有view,可以很方便地写测试客户端,包括管理后台都很合适, 可以不用web技术做了
qtxie
13:13应该没人做过
13:13libuv是C API吗?
DavidFeng
13:13是的
qtxie
13:14那就比较方便,C++的麻烦些
DavidFeng
13:14libuv是nodejs julia pyuv 等语言/平台的操作系统封装层
13:15系统底层库,绝大部分都是c api的
qtxie
13:16嗯,这个封装好了,肯定很受欢迎的
13:17社区的人就不用等0.7了
DavidFeng
13:18我现在时间比较少,不知道什么时候能完成呢, 我现在还在学习red rebol, 我想先把red/system 0.1.0的代码简单看下, 刚好同时也是熟悉常用word以及red程序惯用法的过程
13:19然后再弄vim的red支持: 语法高亮, 补全(关键字补全,搜集常用word), 然后选一个方向,比如libuv绑定,
13:20https://trello.com/b/FlQ6pzdB/red-tasks-overview 你们在用这个吧?看到你还在更新, 我以后熟悉red了, 也可以来这里关注下你们的进度和工作, 说不定我也能参与进来
qtxie
13:50恩,慢慢来。我们是用trello管理项目的。

Dieken
01:01初到,问个 Red 的函数语法问题。我看了些 Red/Rebol 文档,似乎 Red/Rebol 只支持固定个数的参数,虽然可以用 series 模拟可变个数的参数,但是命名参数和可选参数推荐的做法是怎样的?
01:02另外,Red/Rebol 的代码里,函数调用都不带括号,解析时从右向左么?虽然语法没问题,但是看着一长溜,要人肉识别函数调用边界,感觉可读性很差啊??
qtxie
01:08可选参数函数,一般用把所有参数放在一个block里。print 函数就是这么做的。
01:11把代码结构组织好,就不会出现一长溜的情况了。几乎所有语言都能写出可读性很差的代码吧。 ;-)
DavidFeng
01:42可选参数可以使用 refinement来实现
01:42>> help copy
USAGE:
COPY value

DESCRIPTION:
Returns a copy of a non-scalar value.
COPY is an action! value.

ARGUMENTS:
value [series! any-object! bitset! map!]

REFINEMENTS:
/part => Limit the length of the result.
length [number! series! pair!]
/deep => Copy nested values.
/types => Copy only specific types of non-scalar values.
kind [datatype!]

RETURNS:
[series! any-object! bitset! map!]
01:43这样的, 使用的使用就是 copy, copy/part, copy/deep
01:43命名参数要做的话, 怕是只能使用block了
Dieken
01:59多谢两位解答! 可选参数用 block 还能表达的勉强,函数内部自行根据 series 长度给可选参数赋值, 用 refinement 感觉不合适吧,多来几个可选参数的组合,refinement 的个数就爆炸了。
02:01命名参数是可以用 block 来做,[k v k v] 然后函数内部自行构建哈希表。 可以解决,就是语法糖不够漂亮,好像 rebol 社区也没觉得这是个问题,没人做个宏包装下,奇怪。。。
DavidFeng
02:12我也是刚学red没几天, 我觉得可以先看red代码, 看red这边的惯用法是什么, 说不定习惯了也觉得挺好, red和lisp好像,我觉得red就是一个更好的lisp
02:13而且有了red,lisp我感觉就没什么独特的价值了
mahengyang
02:16@Dieken map不是可以用 #( …) 语法糖吗
Dieken
02:37@DavidFeng 不要蔑 lisp 嘛,70 年代的语言都有可选参数、命名参数了。。。
02:38@mahengyang 还没看到 map 语法,嘿嘿,我再多看看教程
02:39发现一个问题,在 red 里输入 print ["aa} 回车,然后不管输入什么都退不出来了,ctrl-c, ctrl-d, ctrl-z 都不响应。 mac os x 系统。
02:40说错了,是 print ["aa"}
DavidFeng
02:43不是蔑视, 是我觉得lisp不再是我心中最有独特价值的语言了, s表达式, rebol也有,而且更好更方便, 宏, red也有
02:43确实, 估计内部实现哪里有问题,我也退不出去,直接直接kill进程
Dieken
02:44我去 red/red room 喊一句。。。
02:47直接执行 red 报告 "PROGRAM ERROR: Invalid encapsulated data.",按全路径执行 red 没事,这是个已知问题么?我记得去年试时有这个问题,一年后还有这个问题。。。。
qtxie
03:22说错了,是可变参数,用block
03:22可选参数,用refinement
Dieken
03:25refinement 等价于函数重载吧,一个函数有多个签名,跟可选参数不是一回事。比如我有个函数 foo(:a a :b b :c c :d d :e e),要表达这 5 个可选参数的组合,那得多少个 refinement 才够用。。。。
03:26mahengyang 推荐的那个 #(key, value) 语法糖不错
qtxie
03:27几个可选就用几个refinement
03:27refinement也可以组合使用的
03:28
foo/a
foo/a/b/c
foo/c/a/e
03:29调用函数的时候,可以自由组合refinement
03:30还有,用其他语言的特性来套另一种语言,必然是别扭的
Dieken
03:30orz,我再看看文档。 refinement 的顺序决定了参数被消费的顺序和个数?
qtxie
Dieken
03:31是有点别扭, /xx 以前只在 dos 命令选项见过,写法是 cmd /a xx /b xx /c xx 这样的
03:31red 代码是有点命令行的意思,都很短 ,哈哈
03:32多谢! @qtxie
qtxie
03:33> "PROGRAM ERROR: Invalid encapsulated data."

这个问题是Rebol SDK的问题,目前还没有找到时间处理,优先级不高,不过1.0前肯定要解决的。
03:33@Dieken 不用谢。:-)
Dieken
03:401.0 大概啥时候出?
03:40现在还是 0.6 呢
qtxie
04:01我也不知道 :sweat_smile:
Dieken
04:01:smile:
greyhawk
15:23我理解refinement,其实是不是就是函数编程里面的柯里化在red里的实现,保证参数是一个,这样就很容易组合函数?

DavidFeng
01:20你看一下red的语法, 是没法直接做变参的.
01:20f1 a1 a2 f2 a1 a2
01:21可以说是red的语法要求参数数量必须固定,你自己理解一下

mengxin2049
16:44先学c还是red

xingtone
10:34red first

mahengyang
08:32block怎么删掉最后一个元素呢
08:32remove next my-block是删除的第二个元素
bear256
08:37@mahengyang 我的办法是这样子的
>> my-block: [1 2 3] 
== [1 2 3]
>> my-block: take/part my-block (length? my-block) - 1
== [1 2]
>> my-block
== [1 2]
mahengyang
08:40@bear256 有没有优雅一点的方式
qtxie
08:42
remove back tail my-block
bear256
08:44那如果要删除block中某个index下的元素呢
mahengyang
08:44@qtxie 厉害,我试了remove tail my-block,差一个back
08:46看起来要把指针移到指定的index下,再remove
qtxie
08:46
take/last my-block
08:47更短些
mahengyang
08:48take/last直接就把最后一个删掉了呀,厉害
08:53TAKE is an action! value 所谓的action! value是不是会有副作用的
qtxie
08:54remove 也是 action!
bear256
09:07@qtxie 我删除某个下标元素的做法是这样的
>> a: [1 2 3 4 5 6]
== [1 2 3 4 5 6]
>> idx: 3
== 3
>> a: append append [] take/part a (idx - 1) remove a 
== [1 2 4 5 6]

有没有更简便的办法?
qtxie
09:32
take at a idx
bear256
09:34@qtxie 谢谢 那remove at a idx也是一样的咯
qtxie
09:35不一样哦
09:35你可以试一下
bear256
09:35我试了一下 对于删除a的idx下标的元素的效果是一样的
09:36只不过这两个式子的返回结果不一样
>> a: [1 2 3 4 5]
== [1 2 3 4 5]
>> at a 3
== [3 4 5]
>> take at a 3
== 3
>> a: [1 2 3 4 5]
== [1 2 3 4 5]
>> remove at a 3
== [4 5]
qtxie
09:37啊,对,我弄错了
09:38结果一样的 :sweat_smile:
09:38看来是饿了 ;-)
bear256
09:38恩恩 准备下班 回家吃饭
mahengyang
09:41@qtxie 你们加班多吗?
qtxie
09:42其实没有固定的时间 :sweat_smile:
mahengyang
09:42真好,你们公司几个人呀
bear256
09:47@qtxie Red有没有考虑先出个Specification文档和测试集 就像Perl或Java 这样便于有兴趣的同学可以基于其他语言C、Java、.NET等去实现在不同平台上的解释器或字节码生成器 这样可以加速Red语言的开发进程 同时也可以借助其他平台成熟的VM和GC优势 快速发展
09:49@qtxie 其实我觉得Red/REBOL语言本身的优势在于语言本身所倡导的思想和理念 至于是不是一定要把编译器和解释器弄得那么Tiny倒是其次的
09:55@qtxie 当然 这样可能就和Red定位Full Stack的目标有所不符 但对于语言的推广大有益处 并且可以吸引其他编程语言使用者
qtxie
10:30有测试集的。Red从一开始就开源的,这么多年了,也没几个人贡献代码,怎么会奢望有人基于其他语言去实现?
10:32也没有刻意让编译器和解释器这么小,实现了该实现的功能,它就这么小,我们也没办法
DavidFeng
12:24我们也没有办法,好萌啊,哈哈,😆
12:25这句好熟悉,好像是台词: 我们也没有办法,只好拿钱包抵工资,原价50 100的,统统只要10块钱
12:26规范也有, r/s的. 官网 doc链接的有
12:26http://static.red-lang.org/red-system-specs.html
12:27red本身目前应该没有规范,不过,用其他语言实现,或者增加新后端的话, 如果你开始做这项工作了, 应该不太会问这个问题了.
12:28可以从子集一点点加. 跟进最新的red进度. 话说red自己都还没有1.0,还在不断添加新特性, 怎么会有完整规范呢,
12:28测试很早就有了, 参见源码中的quick test, peter a wood添加的.
12:29我觉得自己玩的 话, 可以用其他语言实现一个极简red解释器,玩一下,体验一下, 然后最好参与到官方的red开发中, 完善现在后端,或者添加新后端.
12:31red这么多年没有吸引很多人贡献代码,我也觉得很不应该, 不知道为啥~ 反正我以后有能力之后打算加入了.
qtxie
13:10希望那时候有足够的 :moneybag: ,可以雇的起 ;-)

mahengyang
01:53怎么使用高阶函数呀?比如从一个列表里筛选元素
01:54a: [[1 2] [3 4]] 从a里面取出每个子元素的第一个1 3
bear256
02:01
b: [] foreach item a [append b item/1]
mahengyang
02:02我现在也是这样写的,想问下有没有函数式的写法
bear256
02:22不太明白你的意思
function [a /local b] [
    b: [] foreach item a [append b item/1]
    b
]

这样可以么
mahengyang
02:25类似这样的map function[item] [item/1] a
02:25red里面好像不叫map,也不叫apply
bear256
02:30这样子算不算是你要的函数式了
foreach item a [extract/index/into item 2 1 []]
02:32在改变a也不新增变量的情况下 返回一个结果series!
mahengyang
02:34extract/index/into item 2 1 [] 这个extract看起来不怎么直观,extract/index/into [1 2 3 4 5 6] 2 1 [] 返回的结果是[1 3 5]
02:34每隔两个取一个的意思?好奇怪

mahengyang
02:11red脚本怎么读取命令行传的参数呢
02:11red my-script.red 我的参数
02:12my-script.red里怎么拿到我的参数
DavidFeng
02:14print system/options/args
02:15[![image.png](https://files.gitter.im/red/red/Chinese/W4ii/thumb/image.png)](https://files.gitter.im/red/red/Chinese/W4ii/image.png)
02:15[![image.png](https://files.gitter.im/red/red/Chinese/nZgG/thumb/image.png)](https://files.gitter.im/red/red/Chinese/nZgG/image.png)
mahengyang
02:15ok,多谢

imbyron
09:20Hi,冒个泡。看到蔡学镛老师的推荐,准备学习一下 Red 语言。

laomafeima
13:36大家好,red 学习者~
qtxie
14:08你好!
walksnail
15:19新人报个到

laomafeima
08:36看了之前的聊天记录,想说:red 开源几年了,贡献的人也不多,是不是因为实现的预言太小众了,熟悉rebol的人少之又少,增加了学习的曲线。即便自己想要用其他语言去实现,也要先了解现在是如何实现的。
08:37拙见~
qtxie
08:40没错~ 所以不能指望靠别人贡献来推进开源项目的
DavidFeng
08:46欢迎~
laomafeima
08:57我想了解red的第一件事就是去学rebol了。等于需要学好两个语言才行(我目前看来是两个,可能学会了rebol同时也会了red,但是门槛看起来高了)。
08:57red 的自举计划有安排么?
DavidFeng
08:58应该说短期内不会把重点放到自举上, 毕竟人手有限,优先级更高的事情还有很多
08:58我以自身体会告诉你,学习rebol完全不会浪费,
08:58可以说学习rebol就约等于学习red
laomafeima
09:04谢谢~~看了介绍也是说是学习了rebol约等于学习了red。可以问一下有给1.0版本计划时间吗?
OhCoder
09:18目前了解到的貌似没有1.0版本计划时间。
kuyewen_twitter
12:59linux上red怎么实现gui,好像目前只有win和osx的。

DavidFeng
02:19gtk的view后端正在开发中,github上能看到.

xingtone
11:55@laomafeima 不是这样的,red很牛的,小而快

laomafeima
09:00@xingtone 我并没有否认这些东西啊~,或者是哪里引起你的误会了?

mahengyang
07:11http://www.red-lang.org/p/documentation.html
07:11打不开了,是不是被墙了
lsanotes
07:43官网早就被墙了吧,我一直都是翻墙看的
mahengyang
07:43哦,好吧,看了下red的test都是rebol写的,
lsanotes
07:45作者就是不满意 rebol 发展缓慢,才开始自己搞 red 的
mahengyang
07:46怎么参与开发呢?我先写点test
lsanotes
07:49qtxie 参与开发有4年了吧,TA 应该比较熟手... 我还是小白,刚进群玩
mahengyang
07:49@qtxie 老司机带路吧
lsanotes
07:51https://trello.com/b/FlQ6pzdB/red-tasks-overview 这个是项目的任务单,没人干的应该都可以认领....
mahengyang
07:52ok,怎么感觉测试都是这哥们写的
07:52Peter W A Wood
lsanotes
07:53中文区感觉没啥人,去英文区玩吧。 里面每天还都挺活跃的。
mahengyang
07:53恩,英文区看不懂他们天天在讨论什么问题,
lsanotes
07:54你是做啥开发的?
mahengyang
07:54java
07:54共享单车的后台
lsanotes
07:56那 RED 估计应用场景比较少啊.... 我做移动开发的,感觉也基本用不上。
mahengyang
07:56是的,但看着比较好玩,我之前用它写了个家谱的小程序,感觉很趁手
07:57https://github.com/mahengyang/famtree
qtxie
07:58对,https://trello.com/b/FlQ6pzdB/red-tasks-overview 的可以认领,还有就是test。其实很多函数是缺了test的。
lsanotes
07:58很棒啊 red 做 cli 的小程序好像是很好
mahengyang
07:59我喜欢写test
qtxie
07:59还有就是帮fix issues,不过这个没有写tests容易
mahengyang
07:59fix issues是不是还要跟踪代码啊
08:00test有针对Red函数的,还有针对Red/System的函数的
qtxie
08:07@lsanotes Android也可以开发的
mahengyang
08:08安卓界面很美观啊
qtxie
08:10这个是test用的,没有美化,用的原生控件
08:10控件的摆放也比较随意
mahengyang
08:11很好奇red的底层怎么适配这么多的平台
lsanotes
10:15@qtxie 前几周跑了下Andorid Sample, 发现运行不起来...
10:18http://static.red-lang.org/eval.apk
10:18估计是太老了,还是 13 年的
10:20你视频里面的例子在哪里?
qtxie
11:18目前在私有仓库里开发,源码会在0.6.5的时候合并到master分支

mahengyang
07:38@qtxie 写了几个测试之后怎么提交代码呢?拉一个新的分支,然后提交一个PR吗?trello上的卡片怎么标记为已完成呢
qtxie
07:39对,提交PR
07:40trello上的卡片只有Red Team成员才有权限修改的,你完成了哪一项?
mahengyang
07:40还没有弄好呢,我先问下流程

NjinN
14:01@qtxie red现在读取GB2312的文件会报错,read/as还不能有,有什么办法解决吗?
14:02Access Error: invalid UTF-8 encoding: #{B3C9BDBB}
qtxie
14:15read/binary 或者实现 read/as 或者把文件先转成 utf8

fatetwist
05:58有人在吗
qtxie
NjinN
08:48@qtxie 这两天想玩股票量化分析,需要大量抓取网站数据,rebol/red有现成的ip代理的解决方案吗?
qtxie
09:57没有…
NjinN
10:18@qtxie red里好像没有for循环,这个是出于什么考虑,很多时候还是感觉for好用一点,后期会考虑加上吗
qtxie
10:54有 foreach, forall, forskip. 你需要哪种for循环?
NjinN
15:29我就喜欢 for i 1 100 1 [ ] 这种。。。

qtxie
03:46可以自己写一个这样的 for 函数,记得有人写过的。。。
NjinN
06:18@qtxie 我知道自己用while就可以实现for函数,但是我不确定内部实现如何,不确定有没有性能差异。
06:20@qtxie 个人认为即使为了方便用户迁移和代码迁移,也要加上for循环,毕竟用户本来就不多,循环控制又经常用到
qtxie
06:57也许后面会增加编译器的支持,目前如果需要,可以先自己定义函数。
06:58看了下Rebol,原来Rebol里有这个。
>> ? for
USAGE:
    FOR 'word start end bump body

DESCRIPTION:
     Repeats a block over a range of values.
     FOR is a function value.

ARGUMENTS:
     word -- Variable to hold current value (Type: word)
     start -- Starting value (Type: number series money time date char)
     end -- Ending value (Type: number series money time date char)
     bump -- Amount to skip each time (Type: number money time char)
     body -- Block to evaluate (Type: block)
mahengyang
06:58@qtxie 看到源码里有三个文件:actions.red natives.red functions.red 这三个有什么区别呀
qtxie
07:00你应该知道Rebol/Red里是有 action!, native!, function! 这三种datatype的吧
07:00这三个文件,对应的就是这三种类型
mahengyang
07:01
native!:		make datatype! #get-definition TYPE_NATIVE
action!:		make datatype! #get-definition TYPE_ACTION
07:01好像有些actions里面的函数像function
07:02natives里面的,比如lowercase,也像是函数
07:02出于什么原因,它们要使用更底层的写法呢
NjinN
07:02@qtxie 我不明白这三种datatype有什么区别诶,另外你们都不用for循环的咯,今天才发现、、、
mahengyang
07:03@NjinN 我也才发现,我都是用foreach,如果需要索引下标,就在外层弄个i: 1,里面弄个i: i + 1
NjinN
07:08你们大概都不是VB入门的。。。
qtxie
07:12其实这三个类型,在其他语言里都叫 “函数”,Red里根据实现方式的不同,做了细分,粗略来讲:
action!: 每一个类型都有一张action的表,action的数量是固定的,比如block的表在[这里](https://github.com/red/red/blob/master/runtime/datatypes/block.reds#L1682-L1747)
native!: 用Red/System实现的函数,数量不限
function!: 用Red实现的函数
NjinN
07:15说的很好,看不懂。。。这个action的表是什么意思
qtxie
07:18知道C的话会比较好理解,一个struct里装满了函数指针
mahengyang
07:19block是一种数据类型,它可以使用这些action来操作
07:20block形如[ xxx yyy],它可以insert,但不能使用addabsolute,这些actions只能应用于数字
NjinN
07:33我个人还是比较关心这三者的性能有什么差异吗
08:17@qtxie 看介绍red支持多线程,能简单介绍下怎么运用吗
qtxie
09:01还没实现
NjinN
09:12加油啊,少年。老实说red官网更新很慢,而且好像整个路线图一直在延期,好担心项目就不活动了。希望你们坚持下去,我不懂开发,只能给你们加油,么么哒。。。

hilaily
04:07新人准备学学 red
04:08red 会把 gui 作为一个重心吧。很喜欢它的跨平台 gui 编程
charlesbao
05:29请问有什么方法能让gui在read/wait时不让程序等待,而致使未响应?或者red有什么办法多线程/进程/pool?
NjinN
08:23@qtxie 同楼上,view在执行多条语句的时候,如何逐条显示,而不是处理完后最后显示
bitbegin
10:55没有办法,除非系统调用
qtxie
11:52@charlesbao 目前没有什么好的办法,只能自己调用系统API或者在on-time里面read数据
11:54@NjinN 在你需要刷新界面的地方用 loop 10 [view/no-wait],给GUI event loop一些时间处理消息
NjinN
12:24@qtxie 好的,我试试
13:03@qtxie 好像不起作用。。。
13:06view [ base white 1001x601 draw [ pen 255.0.0 line 0x300 1000x300...后面无数条pen语句
13:06如何实现逐条显示?
qtxie
13:52可以用on-time event

mahengyang
04:02
quit: func [
	"Stops evaluation and exits the program"
	/return status	[integer!] "Return an exit status"
][
	#if config/OS <> 'Windows [
		if system/console [system/console/terminate]
	]
	quit-return any [status 0]
]

这个里面的#if config/OS什么意思呀?在red终端里config/OS 没有定义,#if是预编译指令?
qtxie
04:27是的,条件编译
flw-cn
08:53QQ 群号是多少?
qtxie
09:06这里有:http://red.github.io/
flw-cn
09:29我就是因为这里点不开才找到了 gitter
mahengyang
09:29间歇性被墙,多试试总能点开
flw-cn
09:29不过 gitter 也是头一次用,感觉这里也挺好的,功能比 QQ 强大,类似于 Slack
09:30我倒是没被墙,就是点开之后自动弹出 QQ,但 QQ 又识别不出 QQ 号
09:30腾讯的 BUG
mahengyang
flw-cn
mahengyang
09:30是有这个问题
flw-cn
09:31我看 @qtxie 最近贡献了不少了
09:31辛苦了
mahengyang
09:31他是主力开发
flw-cn
09:43那么,谁可以帮我看一下 QQ 群号是什么?
10:05请教大家一个问题
10:06
flw at waker in ~/study/red
$ red foo.reb
Hello, world!

flw at waker in ~/study/red
$ ./foo.reb
** Script Error: Invalid compressed data - problem: -3
** Near: script: decapsulate
if none? script

flw at waker in ~/study/red
$ cat foo.reb
#! /usr/bin/env red

Red []

print "Hello, world!"

flw at waker in ~/study/red
$
10:06这是为啥呢?
10:06我用 red foo.reb 可以执行,但是用 shebang 就不行。
qtxie
10:10群号码:427900172
flw-cn
10:12谢谢
qtxie
10:26不用谢:)
NjinN
15:09加群被拒了。。。
qtxie
23:17要回答问题的

NjinN
02:08什么问题,没看到啊
02:09不会是print "Hello World" 吧
02:13用QQ国际版,没看得到问题。。。换正常版的看到了

lzskyline
10:28居然还有中文讨论组
10:28有没有大牛知道winapi怎么调? 有没有简单一点儿的demo

NjinN
15:39rebol里是用load-extension调用dll吧

mahengyang
06:37red里的routine函数是干什么用的呀?看源码只有一句话
routine: func [spec [block!] body [block!]][
	cause-error 'internal 'routines []
]
06:38@qtxie
qtxie
07:49用routine可以在Red里嵌入Red/System代码
mahengyang
07:50哦,能给个小示例吗
NjinN
07:50能提升效率吗
mahengyang
07:50应该就是为效率而生
NjinN
07:51那也只能编译执行吗
qtxie
07:52https://github.com/red/red/blob/304d8a2f1e879aba50811354ba334454b77de4dd/tests/source/units/routine-test.red
07:53可以,如果代码里有routine,必须要编译才能运行的

Linoonphan
09:27有没有教程推荐一下

zkboss
02:46由蔡老师写的中学生编程

dnpcwudi
11:35冒个泡

jackalcooper
10:57怎么让窗口的大小根据某个值变化
10:57只能做到按钮大小变化
qtxie
11:25当那个值变化的时候,去设置窗口大小

jackalcooper
02:27@qtxie 可是怎么获取窗口啊,不能绑定一个view
02:27
Red [
     Title: "Jackal playing around with Red lang"
]

view [
    style done: button "Done"
    field1: field hint "input here" return done [unview]
    button 300 "open second window!" [
        size_of_2nd_window: as-pair 200 200
        view [ size size_of_2nd_window title "Second Window" text1: button "field1/text"
            react [
                text1/text: field1/text
                l: attempt [(length? field1/text) * 10]
                text1/size: attempt [as-pair l 20]
            ]
        ]
    ]
]
02:27这是我的代码
02:28我想改button 的 block 里面的那个view的大小
qtxie
02:30layout 可以返回窗口的对象。
view win: layout [button "变大" [win/size: win/size + 10x10]]
jackalcooper
06:08@qtxie 明白了,谢谢你
06:14感觉很爽,两个窗口的操作和一个窗口的操作没什么区别

jackalcooper
10:55怎么调用另外一个文件定义的方法或者parse规则呢
10:57看代码找到了
10:57#include
13:07这样的怎么匹配,匹配 n 位任意字符
14:07啊啊啊啊,parse实在太厉害了太好用了。。。为什么人类用了这么久的正则表达式

qtxie
04:47😉

NjinN
09:11@jackalcooper view可以绑定,用v: view/no-wait [...]
09:13可以绑定一个object!,然后就可以用'/'随心所欲地修改窗口属性和内容
KevinOfNeu
10:07Hi,刚开始玩 red, 请问如何进行 断点 debug ?
qtxie
10:31现在还不能设断点,计划0.7之前会支持

jackalcooper
02:29@NjinN 感谢

imsaux
07:29想问下red现在能操作socket吗?看了rebol的例子,在red里好像不行啊
qtxie
08:28要0.7才支持
imsaux
08:29到了0.7应该能开始做点项目啦
cwt8805
08:36有个疑问,http不是工作在socket之上的吗,为啥能用http呢
qtxie
09:24现在http直接用系统提供的上层API做的,不是自己实现的

WayneCui
07:01期待

viest
14:31还有人马?
14:31还有人吗?

sunhonghe
08:29你好

qtxie
08:05你好 :smile:

yangchangming
09:27hello
flw-cn
09:27hello
yangchangming
09:28red是个好东西
flw-cn
09:32赶紧发布 1.0 吧
09:38red 怎么处理命令行参数?
yangchangming
10:25估计等1.0发布后,在出个web框架啥的,像rails这种,就流行了 哈哈

yangchangming
01:54https://www.youtube.com/watch?v=-KqNO_sDqm4 作者的一个red介绍,可以实时翻译成中文的

oppih
18:25有没有用red玩 adventofcode.com 的?