我知道它是在IBM 360大型机架构上实现的,但是有谁知道特别使用了哪些语言?据推测,其中大部分是在3-4个月内编程和部署的 - 这对任何项目来说都是一个非常快速的转变,更不用说有能力监控整个经济的项目了.我部分地认为它可能已经在APL中实现了,因为IBM 360连接并且因为它似乎很适合快速开发这样一个系统所需的那种抽象.有没有人知道更多事实?
可以在没有包含适当Unicode字符的键盘的情况下使用scalaz,或者每个Unicode标识符是否也具有等效的"ASCII"(如果是,是否保证它保持这种方式)?是否有特殊的键盘布局用于scalaz?
什么是最佳做法?直接输入Unicode标识符或使用ASCII替换并使用脚本在提交之前用Unicode替换它们?
我编程APL,并一直在考虑从SourceTree切换到GitKraken.但是,我无法更改差异视图字体.由于字体对于APL非常重要,这是我的举动.
有没有办法在GitKraken中更改字体(和大小)?
这两个官方的hacky答案都是受欢迎的.
SourceTree,使用APL385 Unicode字体,大小为16:
为了比较,这里是Stack Overflow的渲染:
c??chunk
(c1 c2)?{?{(1,1?<\?)??}'::'??}c
c2?#.Strings.deb 2?c2
c2?c2{0???:? ? 0???:?? ? (??),?}1?chunk
c2?¯2??c2,¨??UCS 13 10
r??c1 c2
Run Code Online (Sandbox Code Playgroud) 我知道所有3个都是相关的,我已经看到了用J编写的Project Euler中的问题的几个答案,以及一些写的K.我想知道的是,你建议学习哪个,你会建议去哪里关于获取材料学习它?
有一种叫做APL的旧计算机语言.这可以在Scala中作为DSL实现吗?
在任何APL方言中,条件函数是否有符号或众所周知的习语?
我确定我错过了一些东西,因为它是一种基本的语言元素.在其他语言中,它被称为条件运算符,但我会在这里避免使用该术语,因为APL运算符完全是另一回事.
例如C和朋友有x ? T : F
LISP有(if x T F)
Python T if x else F
等等.
我知道现代APL有:If
和朋友,但它们是控制程序流的命令性语句:它们不返回值,不能在表达式中使用,当然也不能应用于布尔数组.他们完全有不同的目的,这对我来说很好.
我可以用来做功能选择的唯一合适的表达方式是(F T)[?IO+x]
,虽然它完成了工作,即使在数组上也不会特别简写或对我来说是可读的:
('no' 'yes')[?IO+(?5)?.>(?5)]
no no no no no
yes no no no no
yes yes no no no
yes yes yes no no
yes yes yes yes no
Run Code Online (Sandbox Code Playgroud)
我试图用小队提出类似的表达方式?
,但在布尔阵列上惨遭失败.即使我可以,它仍然必须嵌入?IO
或硬编码1,就可读性而言更糟糕.
在我继续定义自己if
并在我将要编写的每个程序上使用它之前,有什么经典吗?我错过了一个明显的功能或操作员吗?
(SO上有APL程序员吗?:-)
\n我目前正在为一个类开发 APL 程序,并且遇到了错误处理问题。
\n\n在我制作的函数中,我想检查输入是否是整数。如果不是,我想返回错误消息并且不运行函数的其余部分。到目前为止,我比较它是否等于它本身的下限。如果没有,我不希望该函数运行并希望它停止。如果我输入并给出错误消息,它会起作用,但如果我输入类似or 的内容并仅给出正常错误,则它4.2
不起作用。我尝试制作一个 try catch 语句,但是当它进入我的函数时它给了我一个错误。\'A\'
\'ABCDEF\'
:Try
这不是我想要的。如果输入是字符或字符串,如何使函数以错误消息结束而不是继续?我知道我可以将整个代码放在 if 块中,但这似乎确实没有必要。
\n\n我的纯文本代码:
\n\n TESTER Q;error\n :If Q\xe2\x89\xa2\xe2\x8c\x8aQ\n \'Possible\'\n :Else\n \'Not Possible\'\n :EndIf\n \'Again, Possible\'\n
Run Code Online (Sandbox Code Playgroud)\n\n作为屏幕截图:
\n\n受到一些 Conor Hoekstra YouTube 视频的启发,我尝试在 APL 中做一些小步骤,并将我的小线条转换为无点样式。但对于这个(1000 个骰子 6 卷中 4、5 或 6 卷的百分比)我无法理解如何在重塑之前消除 omega。
\n{(+/3<?\xe2\x8d\xb5\xe2\x8d\xb46)\xc3\x97100\xc3\xb7\xe2\x8d\xb5}1000
#!/usr/bin/dyalog -script\n\xe2\x8d\x9d /usr/bin/dyalog is a symlink to /opt/mdyalog/18.0/64/unicode/mapl\n\nfactors\xe2\x86\x90{\xe2\x8e\x95ML \xe2\x8e\x95IO\xe2\x86\x901 \xe2\x8b\x84 \xe2\x8d\xb5{ \xe2\x8d\xb5,(\xe2\x8d\xba\xc3\xb7\xc3\x97/\xe2\x8d\xb5)~1}\xe2\x88\x8a\xe2\x8d\xb5{(0=(\xe2\x8d\xb5*\xe2\x8d\xb3\xe2\x8c\x8a\xe2\x8d\xb5\xe2\x8d\x9f\xe2\x8d\xba)|\xe2\x8d\xba)/\xe2\x8d\xb5}\xc2\xa8\xe2\x8d\xac{nxt\xe2\x86\x90\xe2\x8a\x83\xe2\x8d\xb5 \xe2\x8b\x84 msk\xe2\x86\x900\xe2\x89\xa0nxt|\xe2\x8d\xb5 \xe2\x8b\x84 \xe2\x88\xa7/1\xe2\x86\x93msk:\xe2\x8d\xba,\xe2\x8d\xb5 \xe2\x8b\x84 (\xe2\x8d\xba,nxt)\xe2\x88\x87 msk/\xe2\x8d\xb5}\xe2\x8d\xb5{ (0=\xe2\x8d\xb5|\xe2\x8d\xba)/\xe2\x8d\xb5}2,(1+2\xc3\x97\xe2\x8d\xb3\xe2\x8c\x8a0.5\xc3\x97\xe2\x8d\xb5*\xc3\xb72),\xe2\x8d\xb5}\nfactors 20\n
Run Code Online (Sandbox Code Playgroud)\n从https://dfns.dyalog.com/c_factors.htm复制\n它的工作原理与示例完全相同,除了我无法将其作为单独的行输入并且必须求助于\xe2\x8b\x84
\'s
使用该示例会导致
\n./.local/src/sandbox/apl/Main.apl \nSYNTAX ERROR\n factors\xe2\x86\x90{\xe2\x8e\x95ML \xe2\x8e\x95IO\xe2\x86\x901 \xe2\x8d\x9d Prime factors of \xe2\x8d\xb5.\n
Run Code Online (Sandbox Code Playgroud)\n另一个问题是使用像或 这样]
的命令\n使用它们总是会导致]display
]box on
./.local/src/sandbox/apl/Main.apl \n\nVALUE ERROR: Undefined name: \xe2\x8e\x95SE.UCMD\n
Run Code Online (Sandbox Code Playgroud)\n 在论文“数组语言中的组合逻辑和组合器”中,他们给出了 APL 中的解决方案:
\n vec \xe2\x86\x90 1 1 0 1 1 1 0 0 0 1\n \xe2\x8d\x9d split (partition) on zeroes\n \xe2\x8a\x86\xe2\x8d\xa8vec\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xac\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x821 1\xe2\x94\x821 1 1\xe2\x94\x821\xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xb4\xe2\x94\x80\xe2\x94\x98\n \xe2\x8d\x9d size of each sublist\n \xe2\x89\xa2 \xcc\x88\xe2\x8a\x86\xe2\x8d\xa8vec\n2 3 1\n \xe2\x8d\x9d max reduction\n \xe2\x8c\x88/\xe2\x89\xa2\xc2\xa8\xe2\x8a\x86\xe2\x8d\xa8vec\n3\n
Run Code Online (Sandbox Code Playgroud)\n为了清楚起见,他们还指出:
\n\n\n对于那些不读 APL 的人来说,可以翻译最终的最大连续数 APL 解决方案:\n
\nreduce(max, map(length, W(partition, vec)))
那么,如何用 J 表达以下内容呢?
\n \xe2\x8c\x88/\xe2\x89\xa2\xc2\xa8\xe2\x8a\x86\xe2\x8d\xa8vec\n
Run Code Online (Sandbox Code Playgroud)\n该\xe2\x8a\x86
符号似乎是一个“分区”运算符。目前尚不清楚 J 中是否存在这种情况,但我可能只是错过了它。很好奇上面的表达式在“J”中会是什么。