0

我编写了通过二进制搜索在元组的索引列表中搜索的程序我编写并且工作正常

superBubble::(Ord t) =>[[t]]->[[t]]
superBubble a=map bubbleSort a
combining::[BookInfo]->[Int]
combining books= bubbleSort(map index books)  
 binsearch :: [Int] -> Int -> Int -> Int -> Int -- list, value, low, high, return int
 binsearch xs value low high
  | high < low       = -1
  | xs!!mid > value  = binsearch xs value low (mid-1)
  | xs!!mid < value  = binsearch xs value (mid+1) high
  | otherwise        = mid
   where
   mid = low + ((high - low) `div` 2)
  final::[BookInfo]->Int->Int->Int->Int 
  final vs key s r= binsearch concat( combining vs) key s r

并且其他功能正常工作但是当我将它添加到孔中时会给我一个错误

错误是 unexcpted '|' 第一个,但为什么?

4

1 回答 1

1

frombinsearch ::的行比它之前的行缩进一个空格。将这些行中的每一行取消一个空格。

此外,从final::后面开始的行比初始行缩进两个空格。将这些行中的每一行取消两个空格。

最后,正如丹尼尔指出的那样,你-<final::行中有 a ,而不是 a ->(您现在已在发布的代码中进行了更正,从而使将来查看此问题的任何人感到困惑。)


正确代码:

superBubble::(Ord t) =>[[t]]->[[t]]
superBubble a=map bubbleSort a
combining::[BookInfo]->[Int]
combining books= bubbleSort(map index books)  
binsearch :: [Int] -> Int -> Int -> Int -> Int -- list, value, low, high, return int
binsearch xs value low high
 | high < low       = -1
 | xs!!mid > value  = binsearch xs value low (mid-1)
 | xs!!mid < value  = binsearch xs value (mid+1) high
 | otherwise        = mid
  where
  mid = low + ((high - low) `div` 2)
final::[BookInfo]->Int->Int->Int->Int 
final vs key s r= binsearch concat( combining vs) key s r

(并且您还需要包括bubbleSort,BookInfo和的定义index。)


为什么你的缩进是错误的?

因为它binsearch看起来好像它是 的值的一部分combining,而不是一个单独的函数。第一个|是不可能成为表达式一部分的第一个字符。

于 2012-07-18T13:28:36.927 回答