小编wli*_*iao的帖子

什么是数据......在Haskell中意味着什么?

我在omegagb的devlog上看到了这个片段:

data ExecutionAST result where
  Return :: result -> ExecutionAST result
  Bind :: (ExecutionAST oldres) -> (oldres -> ExecutionAST result) ->
          ExecutionAST result
  WriteRegister :: M_Register -> Word8 -> ExecutionAST ()
  ReadRegister :: M_Register -> ExecutionAST Word8
  WriteRegister2 :: M_Register2 -> Word16 -> ExecutionAST ()
  ReadRegister2 :: M_Register2 -> ExecutionAST Word16
  WriteMemory :: Word16 -> Word8 -> ExecutionAST ()
  ReadMemory :: Word16 -> ExecutionAST Word8
Run Code Online (Sandbox Code Playgroud)

什么data ... where意思?我认为该关键字data用于定义新类型.

syntax haskell gadt

46
推荐指数
2
解决办法
3231
查看次数

Java.util包中的数组排序算法

 /**
 * Sorts the specified sub-array of bytes into ascending order.
 */
private static void sort1(byte x[], int off, int len) {
// Insertion sort on smallest arrays
if (len < 7) {
    for (int i=off; i<len+off; i++)
    for (int j=i; j>off && x[j-1]>x[j]; j--)
        swap(x, j, j-1);
    return;
}
Run Code Online (Sandbox Code Playgroud)

来自Arrays.java 804-814行

如上所述,它声称使用插入排序.但是,我把它当作冒泡排序?它实际上是哪一个,为什么?

java algorithm

11
推荐指数
1
解决办法
894
查看次数

什么是文件系统区域中的单线程或多线程概念?

众所周知,姜饼将采用ext4来取代YAFFS.原因似乎是YAFFS是单线程的.有人会解释"单线程"在文件系统领域意味着什么吗?那么ext4是多线程的?从哪个方面来说?

谢谢.

filesystems android

5
推荐指数
1
解决办法
1074
查看次数

GHCi调试器中的自由变量

在GHC用户手册GHCI调试器部分中,声明:

GHCi为断点所在的表达式的自由变量(a,left,right)提供了绑定,并且还为表达式的结果(_result)提供了绑定.

因此,这里的自由变量是a,left,right.

为什么该变量不是自由变量?

haskell functional-programming

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

一种模拟Scala中Class的索引访问的方法

如何实现一个可以像Array一样提问的类,提供索引的setter?

喜欢:

val k = new MyKls(size)
k(0) = 2  //<<-- I want this kind of functionality.
Run Code Online (Sandbox Code Playgroud)

谢谢.

scala

3
推荐指数
1
解决办法
130
查看次数

函数依赖的模糊类型

在haskell functonal依赖 维基:

鉴于这些定义:

data Vector = Vector Int Int deriving (Eq, Show)
data Matrix = Matrix Vector Vector deriving (Eq, Show)
instance Num Vector where
  Vector a1 b1 + Vector a2 b2 = Vector (a1+a2) (b1+b2)
  Vector a1 b1 - Vector a2 b2 = Vector (a1-a2) (b1-b2)
  {- ... and so on ... -}

instance Num Matrix where
  Matrix a1 b1 + Matrix a2 b2 = Matrix (a1+a2) (b1+b2)
  Matrix a1 b1 - Matrix a2 b2 = Matrix …
Run Code Online (Sandbox Code Playgroud)

haskell ghc

3
推荐指数
1
解决办法
139
查看次数

Python中的"*"是什么意思?

我在python中遇到了一行.

            self.window.resize(*self.winsize)
Run Code Online (Sandbox Code Playgroud)

"*"在这一行中意味着什么?我没有在任何python教程中看到过这个.

python

2
推荐指数
1
解决办法
647
查看次数

如何在F#中使用System.Threading.Tasks?

我正在学习F#.最近,我读到了.NET 4.5关于任务的改进.所以,我看了一下如何在F#中使用它.在fsi中:

use System.Threading.Tasks
Parallel.ForEach([1;2],fun x->x+1);;
Run Code Online (Sandbox Code Playgroud)

给出了很多错误.

另外,在Fsharp核心库的源代码中.我看见:

module Parallel =
open System.Threading.Tasks

[<CompiledName("Choose")>]
let choose f (array: 'T[]) = 
  checkNonNull "array" array
  let inputLength = array.Length
  let lastInputIndex = inputLength - 1

  let isChosen : bool [] = //(Deliberately offside to avoid scrollbars)
       Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked inputLength
  let results : 'U [] = 
       Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked inputLength
Run Code Online (Sandbox Code Playgroud)

但是,我无法使用Microsoft.FSharp.Primitives.Basics.Array.zeroCreateUnchecked.为什么?我有:

错误FS1092:无法从此代码位置访问"Array"类型.

.net f#

2
推荐指数
1
解决办法
620
查看次数

Why is `ref mut` on a for loop binding not the same as `&amp;mut` on the variable being looped over?

In Rust by Example, it says:

A ref borrow on the left side of an assignment is equivalent to an & borrow on the right side.

I thought these two for loops would be equivalent:

Compiles successfully:

let mut v2 = vec![1, 2, 3];
for i in &mut v2 {
    *i = *i + 1;
}
println!("{:?}", v2);
Run Code Online (Sandbox Code Playgroud)

Does not compile:

let mut v1 = vec![1, 2, 3];
for ref mut i in v1 {
    *i = *i + …
Run Code Online (Sandbox Code Playgroud)

rust

2
推荐指数
1
解决办法
503
查看次数

避免for循环中的可变变量

我有一些代码如下.但我希望避免这个可变的变量标志.

我怎样才能做到这一点?

  def map(s: Set, f: Int => Int): Set = (x: Int) =>  {
    var flag : Boolean = false
    for(i <- -bound to bound) {
      if(s(i) && f(i) == x){
        flag = true
      }
    }
    flag
  }
Run Code Online (Sandbox Code Playgroud)

scala

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