나는 F #으로 시작하여 구문을 이해하는데 약간의 진전을 보였다. 그러나 F #의 기능을 사용하는 가장 좋은 방법에 대해서는 아직 명확하지 않습니다. 파이썬에서 내가 어디에서 왔는지, 일반적으로 일을하는 "최고의"(거의 표준적인) 방법이있다. 어쩌면 F #의 경우이기도하지만 알아 내지 못했습니다. 그래서 아래 질문은 F #을 사용하는 가장 좋은 방법이며, F #의 구문에 대한 기술적 인 질문은 아닙니다.Intellisense를 활용하는 코드를 작성해야합니까?
최근 메이어 박사가 OOP의 점 표기법을 칭찬하면서 Intellisense가 사용 가능한 방법 목록을 표시 할 수 있음을 알게 된 Dr. Eric Meijer (C9 Lectures - Functional Programming Fundamentals Chapter 2 of 13)
의 비디오를 보았습니다. 그는 순수 FP에서 이러한 기능을 사용할 수 없으므로 프로그래머가 "앞으로 나아갈 수 있도록"프로그램을 훨씬 쉽게 만들 수 있음을 시인합니다.
실험적인 비트는 Intellisense가 F # 클래스와 함께 작동하지만 물론 클래스처럼 도트 표기법을 사용하는 F # 레코드에서도 작동 함을 보여줍니다. 이것은 Intellisense를 활용하여 클래스를 작성하지 않고도 코드를 작성할 수 있음을 의미합니다 (F # 클래스에서는 레코드보다 무겁고 느리다는 가정하에 잘못 입력 한 경우 수정하십시오). 레코드 유형을 만드는 :
// Create a record type with two values that are functions of two arguments
type AddSub = {add2: int -> int -> int; sub2: int -> int -> int}
// Instantiate a record
let addsub a =
{add2 = (fun x y -> a + x + y); sub2 = (fun x y -> a - x - y)}
// Returns 7, Intellisense works on (addsub 0).
(addsub 0).add2 3 4
// Returns 3, Intellisense works on (addsub 10).
(addsub 10).sub2 3 4
// Create two functions of three arguments
let add3 a x y = a + x + y
let sub3 a x y = a - x - y
// Also got 7, no Intellisense facility here
add3 0 3 4
// Also got 3, no Intellisense facility here
sub3 10 3 4
이 순수한 FP와 OOP의 중간 전략이 있음을 보여줍니다
는다음 코드는 동일한 작업을 수행하는 코드를 작성하는 두 가지 방법을 ("버전"그들에게 전화)를 보여줍니다 위와 같이 함수 값을 사용합니다. 이러한 전략은 객체 (레코드 인스턴스)에 중점을 둔 의미있는 단위로 코드를 구성하고 Intellisense를 사용할 수있게하지만 상속 및 하위 클래스 다형성과 같은 클래스에서 제공하는 기능 중 일부가 부족합니다.
OOP 배경에서 나는 위의 코드에서 a
과 같은 객체가 매개 변수 x 및 y보다 어떻게 든 "중요"하다고 (나는 정의하지 않은 채로 남겨 둘 것입니다) 이러한 코딩 전략이 정당화 될 수 있다고 생각합니다. 코드 조직 및 Intellisense 사용 기능을 근거로합니다. 반면에 OOP의 복잡성으로 인해 불타 버린 나는 "순수한"FP 영역에 남아있을 것입니다.
두 가지 극단적 인 대안 (OOP 및 순수 FP)간에 레코드 사용이 가치가있는 타협입니까?
대체로 다른 대안보다 선호되는 상황에 대한 일반적인 지침은 무엇인가? (순수 FP, 위와 같은 기록 또는 클래스)?
마지막으로 내 코드를 구성하고 Intellisense를 활용하는 데 도움이되는 다른 코딩 전략이 있습니까?
굉장! 감사. 나는 모듈을 생각해야했다. 나는 Meijer 박사가 Intellisense를 사용할 수 없다는 불만을 토로했다는 것을 알았습니다. 그러나 그는 하스켈에 대해 이야기하고 있었고 아마 하스켈에 모듈이나 이와 유사한 시설이 없었을 것입니다. – Soldalma
하스켈의 표준 관습은 자격을 갖춘 모듈을 사용하는 대신 모듈에서 함수를 가져 오는 것이므로 Intellisense와 친숙하지는 않습니다. – Tarmil
@ Tarmil afaik, Haskell에 대한 자동 완성 도구가 있습니다. https://github.com/rikvdkleij/intellij-haskell – Yawar