(.)采用两个函数,它们接受一个值并返回一个值:
(.) :: (b -> c) -> (a -> b) -> a -> c
Run Code Online (Sandbox Code Playgroud)
既然(.)有两个参数,我觉得(.).(.)应该是无效的,但它完全没问题:
(.).(.) :: (b -> c) -> (a -> a1 -> b) -> a -> a1 -> c
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?我意识到这个问题措辞严厉......所有的功能都只是因为讨论而采取了一个论点.也许更好的方式来说它是类型不匹配.
我想编写一个 Prolog 程序,将奇数列表中的中间元素删除到另一个列表中。
For example, If we give : delete_mid([1,2,3,4,5],L) then it will produce : L = [1,2,4,5] as answer.
无法弄清楚如何在Haskell 中以下列方式合并两个列表:
INPUT: [1,2,3,4,5] [11,12,13,14]
OUTPUT: [1,11,2,12,3,13,4,14,5]
Run Code Online (Sandbox Code Playgroud) 是什么
无可辩驳的模式因模式而失败
意思?什么情况会导致此运行时错误?
是否可以在Prolog中使用惰性列表?类似于以下内容:
ones([1 | Y]) :- ones(Y).
Run Code Online (Sandbox Code Playgroud)
虽然这显然不起作用.
在表达中
2 x*3 y*5 z
的x,y并且z可以采取非负整数值(> = 0).
因此该函数将生成一系列数字 1,2,3,4,5,6,8,9,10,12,15,16....
我想要的是一个优雅的算法.
这是一个面试问题.
这里是评估文档的摘录:(参见http://hackage.haskell.org/packages/archive/base/4.5.0.0/doc/html/Control-Exception-Base.html#v:evaluate)
Run Code Online (Sandbox Code Playgroud)Control.Exception.Base.evaluate :: a -> IO a是不一样的
Run Code Online (Sandbox Code Playgroud)evaluate x一个正确的定义是
Run Code Online (Sandbox Code Playgroud)return $! x
我不明白这两个定义之间的语义差异......是否有人可以帮助我?提前致谢!
Java 8引入了一个类似Scala的Stream的Stream类,这是一个功能强大的惰性结构,使用它可以非常简洁地执行这样的操作:
def from(n: Int): Stream[Int] = n #:: from(n+1)
def sieve(s: Stream[Int]): Stream[Int] = {
s.head #:: sieve(s.tail filter (_ % s.head != 0))
}
val primes = sieve(from(2))
primes takeWhile(_ < 1000) print // prints all primes less than 1000
Run Code Online (Sandbox Code Playgroud)
我想知道是否有可能在Java 8中这样做,所以我写了这样的东西:
IntStream from(int n) {
return IntStream.iterate(n, m -> m + 1);
}
IntStream sieve(IntStream s) {
int head = s.findFirst().getAsInt();
return IntStream.concat(IntStream.of(head), sieve(s.skip(1).filter(n -> n % head != 0)));
}
IntStream primes …Run Code Online (Sandbox Code Playgroud) 对于这里的FP认知来说,这看起来真的很明显,但Scala中的点自由风格有什么用呢?在这个主题上真正卖给我的是一个插图,它显示了点自由风格在某些方面(例如性能,优雅,可扩展性,可维护性)如何在非点自由风格中解决相同问题的代码.
出于好奇,为什么下面的程序
1 = 0
"hello" = "world"
Run Code Online (Sandbox Code Playgroud)
由 GHC 有效和编译?这仅仅是一个错误还是一个功能?谢谢!