LearnYouSomeErlang 웹 북에서 Erlang을 배우고 있습니다. 배우는 동안 나에게 충격을 준 한가지는 단락이없는 부울 결합과 분리 연산자였습니다. and
및 or
. 이 연산자의 사용 사례는 무엇입니까? 왜 andalso
과 orelse
대신에 사용 하시겠습니까?Erlang에서 비 단락 부울 연산자를 사용하는 것은 무엇입니까?
답변
andalso
과 orelse
은 꼬리 재귀가 아니 었습니다 (R13A까지). 자세한 내용은 http://www.erlang.org/eeps/eep-0017.html을 참조하십시오. 나는 and
/or
을 프로그램에 사용하는 것이 좋은 이유라고 생각하지 않습니다.
흥미로운 링크. 답변 해주셔서 감사합니다! – missingfaktor
및/또는 연산자는 단순히 훨씬 오래되었습니다. andalso/orelse 연산자는 추후에 추가되었습니다. 가장 단순한 부울 연산을 수행하고 수평 공간이 몇 가지 기계주기를 저장하는 것보다 더 중요 할 때 사용 사례가 될 수 있습니다. 예를 들어 :
X = Y and (A or B),
오히려
X = Y andalso (A orelse B),
보다 눈에 조금 더 쉽습니다.
이전 버전과의 호환성을 이유로 원본 동작을 변경하거나 단락이 될 수 없어 새로운 키워드가 필요했습니다. andalso/orelse라는 이름은 Standard ML에서 왔습니다.
나는 다른 일을하는 그들을보고 등을 사용 : 내가 원하는
and
/or
같은 논리 연산자는 논리 값을 비교. 그들은 엄격하기 때문에 자동으로 타입 검사를받습니다. 나는 정확히 무엇이 호출되었는지 KNOW입니다. C. 에서
andalso
/&&
같은 많은 제어를위한orelse
및||
보고 오류가 나는 실행 된 것을 알고 좋은 느낌 얼랑에 정의가 어떻게 갔는지된다.
1.'andalso'와'orelse'도 논리 연산자로 사용할 수 있습니다. 2. 유형 검사에 대해 이해하지 못했습니다. 3. 무엇이 불려 왔는지 알기 란 명확하게 투명한 표현으로는 중요하지 않다. 부작용의 맥락에서만 관련이있다. – missingfaktor
로버트 (Robert)는 말하기를 가끔은 모든 피연산자가 평가 될 수 있도록하기 때문에 예외를 발생시킬 수 있기를 바란다. 심지어 조건 자의 평가에 필요하지 않더라도. 좋은 지적입니다. – dsmith
@dsmith : 네, 그 둘 모두가 실제로 부울 값을 반환하는지 확인해야합니다. 아마도 지나치게 조심 스러울 지 모르지만 최대한 빨리 오류를 잡는 것이 좋습니다. – rvirding
'Logic Programming'은 Prolog에서 Erlang의 기원과 관련이 있다고 말했기 때문에 태그가 붙어 있습니다. – missingfaktor
관련 항목 : [가드 테스트에서 'andalso'를 (를) 통해'및 '를 선호 할 때] (http://stackoverflow.com/questions/6025132/when-to-prefer-and-over-andalso-in-guard-tests). – kay