начинающий программист haskell

isPalindrome::(Eq a) => [a] -> Bool
isPalindrome [] = True
isPalindrome [x] = True
isPalindrome (x1:xs:x2:[]) 
    | x1 == x2 = isPalindrome xs
    |otherwise = False


[1 of 1] Compiling Main             ( myHas.hs, interpreted )

myHas.hs:37:27:
    Couldn't match expected type `[a]' against inferred type `a1'
      `a1' is a rigid type variable bound by
           the type signature for `isPalindrome' at myHas.hs:33:18
    In the first argument of `isPalindrome', namely `xs'
    In the expression: isPalindrome xs
    In the definition of `isPalindrome':
        isPalindrome (x1 : xs : x2 : [])
                       | x1 == x2 = isPalindrome xs
                       | otherwise = False

Я начинающий программист haskell и не знаю, почему я получаю эту ошибку, любую помощь, пожалуйста?

-121--1726202- Какой из sprintf/snprintf является более безопасным? Я хочу знать, какой из этих двух вариантов является более безопасным для использования: # define MAXLEN 255 char buff [MAXLEN + 1] sprintf (буфф, «%. * s», MAXLEN, имя) snprintf (buff, MAXLEN, «% s», имя) Мой...

Я хочу знать, какой из этих двух вариантов является более безопасным:

#define MAXLEN 255
char buff[MAXLEN + 1]
  1. sprintf (buff, «%. * s», MAXLEN, name)

  2. snprintf (buff, MAXLEN, «% s», name)

Я понимаю, что оба варианта одинаковы. Пожалуйста, предложите.

40
задан chema989 5 August 2016 в 23:50
поделиться