小编nbd*_*dip的帖子

如何在Haskell中计算类型

让我们说

  flip :: (a->b->c) ->b->a->c
  const ::d->e->d
Run Code Online (Sandbox Code Playgroud)

(翻转const)的类型

  a=d,b=e,c=d
Run Code Online (Sandbox Code Playgroud)

  b->a->c
Run Code Online (Sandbox Code Playgroud)

所以类型会是

  e->d->d
Run Code Online (Sandbox Code Playgroud)

但是(地图拍摄)它

  [Int]->[[a]]->[[a]]
Run Code Online (Sandbox Code Playgroud)

所以我不明白这个ghci是如何计算的.我理解[[a]] - > [[a]]但是为什么以及如何[Int]?

编辑:例如,如果我们写ghci

  :t flip const 


it would return b->c->c
Run Code Online (Sandbox Code Playgroud)

和ghci会像我一样计算出来.

 map :: (a->b)->[a]->[b]
 take :: Int->[c]->[c]
Run Code Online (Sandbox Code Playgroud)

那么为什么地图需要

  [Int]->[[a]->[a]]
Run Code Online (Sandbox Code Playgroud)

为什么[Int] ghci是如何计算出来的

haskell types ghci

6
推荐指数
2
解决办法
250
查看次数

Java中的showMessageDialog中frame和null有什么区别?

假设我有一个JFrame类的对象作为框架

我想知道它们之间有什么区别

JOptionPane.showMessageDialog(null,message) 
Run Code Online (Sandbox Code Playgroud)

JOptionPane.showMessageDialog(frame,message)
Run Code Online (Sandbox Code Playgroud)

打印出来的东西.给出相同的结果,它们会弹出同一个地方.所以我想知道这两者之间究竟有什么区别?背景中实际发生的事情有何不同

java swing

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

Tree(Int,Int)在haskell中的含义是什么?

我正在学习Haskell中的数据结构.我看到类似的东西:

  Tree(Int,Int)
Run Code Online (Sandbox Code Playgroud)

这是否意味着树木的元组?我正在尝试写一些类似的东西:

  data Tree a = Leaf a | Node (Tree a) a (Tree a) deriving (Eq,Show)

  weight :: (Tree Integer) -> Tree(Integer,Integer)

  weight (Node left leaf right) = Node (leaf, (sum left) + (sum right)) 
                          where 
                          sum (Leaf a) = 0
                          sum (Node left leaf right) = leaf + sum left + sum right
Run Code Online (Sandbox Code Playgroud)

但我得到无法匹配的错误.

我想得到的是每个Node的权重并将其作为元组返回,并且单个叶子没有权重.

tree haskell tuples

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

如何限制元组?

我认为Haskell中的元组就像

  tuple :: (a,b)
Run Code Online (Sandbox Code Playgroud)

这意味着a和b可以是相同类型,也可以是不同类型

因此,如果我定义一个函数而不给它类型,那么当我写ghci中的t函数时,我可能得到(t,t1)或一些不同的类型.因此,如果不在功能中定义它,可能只获得相同的类型.我听说haskell不允许这样做

所以我不能写一些像

  function [(x,x)]=[(x,x,x)]
Run Code Online (Sandbox Code Playgroud)

得到的

  :t function
     function :: [(a,a)]->[(a,a,a)]
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试做的练习,这个练习要我编写一个函数而不定义一个类型.例如得到

  Bool->(Char,Bool) 
Run Code Online (Sandbox Code Playgroud)

当我给

  :t function
Run Code Online (Sandbox Code Playgroud)

在ghci.我应该写 -

  function True=('A',True)
Run Code Online (Sandbox Code Playgroud)

我不被允许定义函数的类型部分所以我不能写

  function::(Eq a)=>[(a,a)]->[(a,a,a)]
Run Code Online (Sandbox Code Playgroud)

或类似的东西

haskell types tuples

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

这两者之间的区别是什么(Haskell)

我正在检查一些代码,然后我试着写其中一个,但我一直得到一个解析'='错误但是当我复制从源代码粘贴代码它工作正常,这有什么区别;

quicksort2 :: (Ord a) =>  [a] -> [a]
quicksort2 [] = []
quicksort2 (x:xs) =   
    let smallerSorted = quicksort2 [a | a <- xs, a <= x]  
        biggerSorted = quicksort2 [a | a <- xs, a > x]      
    in  smallerSorted ++ [x] ++ biggerSorted
Run Code Online (Sandbox Code Playgroud)

还有这个 ;

quicksort :: (Ord a) => [a] -> [a]  
quicksort [] = []  
quicksort (x:xs) =   
    let smallerSorted = quicksort [a | a <- xs, a <= x]  
        biggerSorted = quicksort [a | a …
Run Code Online (Sandbox Code Playgroud)

sorting haskell

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

如何从Haskell中的String读取递归数据结构?

例如;

  data TRAINING=AGAIN Int [TRAINING]
                |RUN
                |JUMP
                |PUNCH Int 
           deriving (Eq,Show,Read)
Run Code Online (Sandbox Code Playgroud)

是定义的,我希望如果用户输入如下内容:

  "RUN, PUNCH 15, AGAIN 3 [JUMP, AGAIN 2 [PUNCH 20]]"
Run Code Online (Sandbox Code Playgroud)

然后程序应该返回

  [RUN,PUNCH 15,AGAIN 3 [JUMP,AGAIN 2 [PUNCH 20]]]
Run Code Online (Sandbox Code Playgroud)

所以我写了

  fight :: String->[TRAINING]
  fight xs=[read xs ::TRAINING]
Run Code Online (Sandbox Code Playgroud)

但我得到"没有解析异常".我是新手,我想知道"没有解析异常"是什么以及如何解决它?

haskell types

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

标签 统计

haskell ×5

types ×3

tuples ×2

ghci ×1

java ×1

sorting ×1

swing ×1

tree ×1