OO FP 잡념
대상
FP 에서 대상 이라는 것 을 어떻게 이해 합 니까?
Erlang -> 대상 Object 는 기본 데이터 와 기본 데이터 의 조합 입 니 다. Object 에 Type 이 있다 면 아 톰 으로 표현 할 수 있 습 니 다 (등가 형식 은 Record). 동명 함 수 는 매 칭 을 통 해 서로 다른 Type 의 Object 에 어떤 알고리즘 을 적용 하 는 지 판단 할 수 있 습 니 다.Type 은 하나의 이름 을 짓 는 것 이 라 고 할 수 있 습 니 다. 하나의 Object 는 언제든지, 마음대로, 지어 지 거나, 어떤 이름 으로 바 꿀 수 있 습 니까?
Haskell - > Erlang 's + Strong Type: Type 은 인터페이스, 약속 입 니 다. 함 수 는 특정 Type 의 Object 에 작용 하 는 것 으로 정의 되 었 습 니 다.
댓 글: erlang 의 type 은 현실 세계 에 더욱 부합 되 고 같은 Object 는 서로 다른 장면 에서 서로 다른 Type 으로 볼 수 있다.Type 은 하나의 라벨 일 뿐 수시로 붙 이거 나 여러 개 를 붙 여도 상관 없습니다. 관건 은 함수 가 어떻게 처리 하 느 냐 에 달 려 있 습 니 다. 또는 함수 가 어떻게 처리 하 느 냐 에 달 려 있 습 니 다. Type 은 각종 함수 ('도', 도 ', 비상 도) 의 알고리즘 을 통 해 나타 납 니 다. 미리 붙 인 라벨 이 아니 라 라벨 은 하나의 (' 명 ', 이름', 이름 '비상 명) 입 니 다.최 악의 결 과 는 Except 이나 Crash 입 니 다.
a purely functional program's state is implicitly kept in function call stacks.
=====================
OO 의 대상:
가장 간단 한 정 의 는 특정한 인터페이스 인 터 페 이 스 를 실현 한 것 으로 이러한 인터페이스 에 의 해 이해 되 고 처 리 될 수 있 는 상태 states 를 포함 할 수 있다 는 것 이다.
댓 글:
4. 567917. states 는 setter 와 getter 에 의 해 전체 변수 가 된다.OO 의 포장 성 은 매우 취약 하고 은밀 하 다
4. 567917. states 가 다른 행 위 를 하려 면 반드시 계승 을 통 해 다른 대상 에 조합 되 어야 한다.어쨌든 오 브 젝 트 는 어떤 타 입 이 되면 서 다른 타 입 이 될 능력 을 잃 었 다.OO 의 중용 성 은 매우 좁 고 제한 을 받는다
효율
OO 의 상 태 는 일시 적 으로 저장 할 수 있 기 때문에 상태 가 단계별 로 변화 하 는 연산 을 할 때 유리 한 것 같 습 니 다.
FP 는 내부 저장 상태 가 아니 지만 같은 매개 변 수 를 먹이 면 같은 결 과 를 출력 할 수 있다 는 장점 이 있 기 때문에 메모리 에 이 결 과 를 캐 시 할 수 있 습 니 다. 앞으로 같은 매개 변 수 를 만 나 더 이상 계산 하지 않 고 결 과 를 직접 꺼 낼 수 있 습 니 다.
댓 글: 메모리 가 점점 싸 지면 서 장시간 운행 하 는 FP 효율 이 OO 를 초과 할 것 인가?
3. Erlang 을 DSL 로 한다.
DSL 의 요소: (주, 술어, 빈) + 속성 (명사 또는 형용사)
module 이름 은 주어 로 고려 할 수 있 지만 OO 의 대상 인 스 턴 스 이름 처럼 사용 하 는 것 은 좋 지 않 습 니 다.
싫어?
-module(feed)
feed:has_many(items, {dependency, True})
feed:find("creator")
마땅 히
-module(model)
-import(db)
-record(feed, {creator,
pubDate,
lastUpdateTime})
-record(user, {name,
emal})
db:relations([[feed, has_many(item), with_opt([dependency, etc, etc])],
[user, has_many(feed), with_opt([dependency, etc, etc])]])
db:find(feed, by([{creator, "caoyuan"}, etc, etc]))
어떻게 든 아파.
또는 모듈 은 모듈 입 니 다. 이름 공간, 문제 영역 으로 이해 하면 됩 니 다.
함 수 는 좀 더 공 을 들 일 수 있 습 니 다. 동작 을 제외 하고 이름, 속성 부여, 표 시 를 하고 한 마디 하 는 등 으로 볼 수 있 습 니 다. 예 를 들 어 다음 과 같 습 니 다.
female(amy).
female(johnette).
male(anthony).
male(bruce).
male(ogden).
parentof(amy,johnette).
parentof(amy,anthony).
parentof(amy,bruce).
parentof(ogden,johnette).
parentof(ogden,anthony).
parentof(ogden,bruce).
brotherof(X,Y) :-
parentof(Z,X),
male(X),
parentof(Z,Y),
X Y.
book(Title,Author,Publisher,Date).
author(LastName,FirstName,MI).
publisher(Company,City).
create_tree(niltree).
inserted_in_is(Item,niltree, btree(Item,niltree,niltree)).
, signature s (expression), , , , signature
질문:
1. OO 가 없 는 이상 왜 ORM 에 가 려 고 합 니까? 아마도 model 의 가장 좋 은 표현 은 record + relation database + SQL 일 것 입 니 다.
SQL 이 DSL 아니 겠 습 니까?다만 호환성 을 고려 하여 wrap 을 한 층 더 추가 해 야 합 니 다.
2. DSL 은 천변만화 일 수도 있 고 자연 언어 일 수도 있 습 니 다.컴퓨터 에서 실현 되 는 것 은 분석 과 설 계 를 거 쳐 야 하 는 것 입 니까?라 일 스 로 도 이 걸 벗 어 날 수 없 을 것 같 아 요. 라 일 스 프로그램 을 읽 게 해 주세요. 알 겠 어 요?직접 쓰 게 해 주 시 겠 어 요?물론 간단 한 Todo, Blog, Wiki 는 기 존의 예 로 아마추어 로 역 을 만 들 수 있 지만 ruby 가 현재 DSL 을 디자인 하 는 유연 한 언어 라면 왜 Blog 의 DSL 이 하나 도 나 오지 않 아 Blog 를 쓰 는 것 이 더 쉬 울 까?
3. 라 일 스 의 현재 상황 을 보면 좋 은 애플 리 케 이 션 은 별로 없다. 좋 은 애플 리 케 이 션 으로 설치 한 사 이 트 는 오히려 많다.
4. 문법 적 으로 DSL 에 가장 적합 한 언어 는 Haskell 이 어야 하 는데 많은 Type 이 내 려 가 어 지 럽 고 끝났다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Instalando o Elixir e o Erlang com o gerenciador de versões asdfEsse tutorial usa o gerenciador de versões asdf, mas fique a vontade para utilizar outros se preferir. Infelizmente o as...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.