-2
-- | how do I remove ugly parentheses our of here?
palindromeTest verb = isPalindrome ((\verb -> verb ++ reverse verb) verb) == True
where types = verb::String
괄호 역겨운 봐, 내가 어떻게 그들을 밖으로 작동합니까?
-- | how do I remove ugly parentheses our of here?
palindromeTest verb = isPalindrome ((\verb -> verb ++ reverse verb) verb) == True
where types = verb::String
괄호 역겨운 봐, 내가 어떻게 그들을 밖으로 작동합니까?
palindromeTest
귀하의 표현 :
(\verb -> verb ++ reverse verb) verb
훨씬 이해가되지 않습니다 : 동등한 표현은 다음과 같습니다
(\x -> x ++ reverse x) verb
람다 식의 verb
때문에 로컬 범위했다. 하지만 너는 x
이 무엇인지 안다 : 그것은 verb
이다.
verb ++ reverse verb
또는 전체에 : : 그래서 당신과 함께 식을 대체 할 수있는 마지막
palindromeTest verb = isPalindrome (verb ++ reverse verb)
where types = verb::String
: \x -> x == True
이 id
에 해당하기 때문에
palindromeTest verb = isPalindrome (verb ++ reverse verb) == True
우리는 또한 == True
을 제거 할 수 있습니다 쓸모가 없다. Haskell은 정적으로 타입이 지정되고, 타입은 컴파일시에 해결된다. 그래서이 문장은 아무 것도 추가하지 않습니다. 당신은 함수의 유형 서명에 동사의 유형을 제한 할 수 있습니다 : 그것은 쓸모가 그냥 같은 palindromTest
에
palindromeTest :: String -> Bool
palindromeTest verb = isPalindrome (verb ++ reverse verb)
isPalindrome
이 == True
를 작성,이 = True
을 쓰는 이유도없고, = False
이 경우 조건을 기반으로합니다 ap
을 사용하여
-- | this function checks if string or list are a palindrome
isPalindrome :: (Eq a) => [a] -> Bool
isPalindrome x = reverse x == x
당신은 더 컴팩트 만들 수 있습니다 : 단순히 조건 자체를 반환
개import Control.Monad(ap)
-- | this function checks if string or list are a palindrome
isPalindrome :: (Eq a) => [a] -> Bool
isPalindrome = ap (==) reverse
유형 QuickCheck – kaboom
@kaboom 거기에 있습니다 : 문제가되지 않습니다 : quicktest 특별한 아무것도 아니다 : 그것뿐만 아니라 컴파일러를 통과 그래서뿐만 아니라 실행 하스켈을 만듭니다. –
werid, 나는 그것이 QuickCheck 튜토리얼을 기반으로 필요하다고 생각했습니다. 어쨌든 감사합니다! – kaboom