함수 프로그래밍에서 currying이 어떻게 작동하는지 이해하려고합니다. 나는 wiki을 거쳤으며 동일한 내용에 대해 몇 가지 질문을했습니다. What is 'Currying'? Need help understanding lambda (currying)는 그 태닝 모두 하나 개의 인수 각각 N 이하의 함수로 n 개의 인자를받는 함수를 분할에 대한 이해. 이
"Introduction to Caml"는 참고,의 Caml에 여러 인수 기능하지 튜플 카레 기능 정의를 사용하는 것이 좋습니다 말했다. 'a -> 'b -> 'c 호출 규칙을 'a * 'b -> 'c과 비교할 때. SML/NJ로 작업 할 때 입력 및 출력 모두에 튜플 유형을 사용하는 데 익숙해졌습니다. ('a * 'b) -> ('c * 'd) 튜플을 사용
을 무두질 문제는 페이지의 기능과 같이 정의되어 69 예 책에 의해 스칼라에서 병합 정렬의 예에서 무두질에 문제가 다음과 def msort[A](less: (A, A) => Boolean)(xs: List[A]): List[A] = {
def merge(xs1: List[A], xs2: List[A]): List[A] =
if (xs1.i
목록 및 기능을 사용하고 BST를 만드는 기능 표준 ml을 만들고 싶습니다. 'a list -> ('a * 'a -> bool) -> 'a tree,하지만 난 그것을 몇 가지 문제가 있어요, 여기에 내가 쓴 코드입니다 : : 함수의 유형입니다 datatype 'data tree =
EMPTY
| NODE of 'data tree * 'data *
은 내가 undesrtand하지 않았다 GHC에서 오류 메시지를 얻고, 내 코드를 감소 (내가 readProcessWithExitCode에 추가 인수를 제공해야) import System.Process
main = do
(_, out, _) <- readProcessWithExitCode "echo" ["foo"]
putStr out
부분적으로 중침 함수를 적용하는 것은 을 Learn You a Haskell for Great Good으로 다이빙 한 후 발견 한 새로운 개념이었습니다. 을 감안할 때이 기능 : applyTwice :: (a -> a) -> a -> a
applyTwice f x = f (f x)
저자는 흥미로운 방법으로 그것을 사용 여기 ghci> applyTwic
이유는 println(abc.foldRight(0)(math.max(_.length,_)))
에 object Main {
def main(args : Array[String]) {
val abc = Array[String]("a","abc","erfgg","r")
println(abc.foldRight(0)((a,b) => m
을 무두질하지 않고 단일 매개 변수로 두 개의 값을 전달 다음 베타 감소가 지정되지 않은 람다 계산법에 허용되는 이유는 이해할 수 없다는 : 특히 (λx.x y) (u v) -> ((u v) y)
나는 하나가 두 개의 매개 변수 u 및 v을 전달할 수있는 방법을 이해할 수 없다 λx.x 부분의 단일 매개 변수 x으로 위와 같이 허용하려면 currying