标签: tacit-programming

使用F#的默认编程风格

这不是一个实际重要的问题,但我想在F#中看到默认编程的一个例子,其中我的无函数可以有多个参数(不是列表或元组的形式).

其次,这些函数如何操作复杂的数据结构.我在F#Interactive中试用它,但还没有成功.

我试过,例如:

> (fun _ -> (fun _ -> (+))) 333 222 111 555
Run Code Online (Sandbox Code Playgroud)

这是对的吗?

和:

> (fun _ -> (fun _ -> (+))) "a" "b" "c" "d";;  

val it : string = "cd"
Run Code Online (Sandbox Code Playgroud)

f# tacit-programming

6
推荐指数
1
解决办法
410
查看次数

在J中创建递归默认函数

我是J的新手,我一直在尝试创建一个Fibonacci函数作为练习(总是我学习语言时创建的第二个函数).我无法弄清楚我的做法究竟出了什么问题.我试图将它定义为默认,但如果参数大于1则会挂起.

fib =: [ ` (($: (]-1)) + ($: (]-2))) @. (>&1)
Run Code Online (Sandbox Code Playgroud)

我也试图明确地创建它,并且工作正常.

fib =: 3 : 'if. y>1 do. (fib (y-1)) + (fib (y-2)) else. y end.'
Run Code Online (Sandbox Code Playgroud)

我试图通过用13代替3来创建一个默认,但它引发了一个错误.

   fib =: 13 : 'if. y>1 do. (fib (y-1)) + (fib (y-2)) else. y end.'
|spelling error
|   if. y>1 do. (fib (y-1)) + (fib (y-2)) else. y end.
|   ^
|   fib=:    13 :'if. y>1 do. (fib (y-1)) + (fib (y-2)) else. y end.'
Run Code Online (Sandbox Code Playgroud)

所以,我要求有人解释我在这里做错了什么.

recursion j tacit-programming

6
推荐指数
1
解决办法
212
查看次数

默认写{(+/3<???6)×100÷?}1000

受到一些 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

\n

apl pointfree tacit-programming

6
推荐指数
1
解决办法
195
查看次数

J中隐性编程的优缺点

作为JI的初学者,我常常遇到隐性程序,与更熟悉的显式形式相比,它们看起来相当拜占庭.

现在只是因为我发现解释困难并不意味着默会形式是错误的或错误的.通常,默认形式比显式形式短得多,因此更容易在视觉上同时看到所有形式.

专家提问:这些隐性形式是否表达了更好的结构感,并可能提炼出潜在的计算机制?还有其他好处吗?

我希望答案是肯定的,对于一些非平凡的例子也是如此......

explicit implicit j tacit-programming

5
推荐指数
2
解决办法
417
查看次数

为什么GHC避免默认编程?

我正在查看GHC.Unicode库源并意识到几乎所有的Haskell内部库大多数时候都避免了默认编程(也称为无点样式).简单的功能可以轻松转换,例如:

isLatin1 :: Char -> Bool
isLatin1 c = c <= '\xff'
Run Code Online (Sandbox Code Playgroud)

导致:

isLatin1 :: Char -> Bool
isLatin1 = (<= '\xff')
Run Code Online (Sandbox Code Playgroud)

但有些情况下我无法应用它,例如当我有更复杂的功能时,例如:

isOctDigit c =  c >= '0' && c <= '7'
Run Code Online (Sandbox Code Playgroud)

难以推断出构成操作的方法.我并不是指进入范围,我的意思是仅通过编写函数来执行多个操作.下列:

isOctDigit = (>= '0') && (<= '7')
Run Code Online (Sandbox Code Playgroud)

是无效的,也因为不同的退货类型也(>= '0') . (<= '7') 显然不可能发生.

考虑到这些观察结果,我有以下问题:

  • 什么时候应该使用无点编程而不是显式呢?
  • 为什么GHC更喜欢显式而不是使用部分功能?
  • 如何在不明确的情况下组合不同类型的两个函数,例如在示例中?

haskell tacit-programming

5
推荐指数
0
解决办法
286
查看次数

4
推荐指数
1
解决办法
274
查看次数

J的独特功能有哪些?

我来自C,Fortran,Python,R,Matlab和一些Lisp的背景 - 我在Haskell上读过一些东西.JL或APL家族其他语言中有哪些简洁的想法/例子是独特的,而不是用更常见的语言实现的?我总是有兴趣找出我所缺少的东西......

j apl tacit-programming

4
推荐指数
2
解决办法
585
查看次数

J:列表项之间的符号更改次数

物品a_11.

a =: 1 _1 _1 1 _1
Run Code Online (Sandbox Code Playgroud)

有3个符号变化a:

1, -1, -1, 1, -1
  ?       ?  ?
 here   and here
Run Code Online (Sandbox Code Playgroud)

我如何无限地计算它们?

arrays list j list-manipulation tacit-programming

4
推荐指数
1
解决办法
95
查看次数

无过滤功能

是否存在一个无点函数,filter用于查找列表中对的第一个元素的最小值?例如:

findMinimum xs =  filter ((== minimum (map fst xs)) . fst ) xs

-- example:
findMinimum [(0, 0), (0, 1), (2, 2), (3, 2), (1, 4)] = [(0, 0), (0, 1)]
Run Code Online (Sandbox Code Playgroud)

如何将findMinimum函数转换为无点:

findMinimum = ??
Run Code Online (Sandbox Code Playgroud)

haskell filtering pointfree tacit-programming

4
推荐指数
1
解决办法
142
查看次数

默写 4 : 'x&amp;{.&amp;.;: y'

Conor Hoekstra 最近解决了 APL 中的一个 Leetcode 问题https://youtu.be/QtvvQ7MdwKY问题是x从字符串中取出第一个单词y

在 J 中,使用&.(Under) 和;:(Words) 我可以想出一个很好的明确的一个班轮

solve =. 4 : 'x&{.&.;: y'         NB. Box words in y -> take first x-> unbox words in result while retaining spaces between
   s=. 'Hello how are you Contestant'
   4 solve s
Hello how are you
Run Code Online (Sandbox Code Playgroud)

我遇到的麻烦是找到仍然包含的默认版本&.,主要是因为我认为x需要{.在动词创建期间绑定。这也是魔法13 :转换没有帮助的一个例子

   13 : 'x&{.&.;: y'
4 : 'x&{.&.;: y'
Run Code Online (Sandbox Code Playgroud)

我可以通过使用;:^:_1创建的逆来默认解决它;:

   solve2=. …
Run Code Online (Sandbox Code Playgroud)

j pointfree tacit-programming

4
推荐指数
1
解决办法
140
查看次数