Partial application

Đang mở
#126 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
35/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
javascript
Lĩnh vực
compilers

Hướng nghiên cứu

Bắt đầu bằng cách tái hiện hai biểu thức trong REPL và so sánh các dấu vết rút gọn cùng các dạng chuẩn của chúng. Điều tra lý do tại sao phép áp dụng từng phần của NAND TRUE khác với biểu thức lambda được khai triển thủ công. Được xem là hoàn tất khi các biểu thức tương đương cho cùng kết quả mong đợi, đồng thời đầu ra rút gọn hiện có vẫn báo cáo đúng dạng chuẩn.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

NAND TRUE yields a function which works correctly (λf₂.λa.λb.f₂ba). But when using (NAND TRUE) TRUE get an incorrect result (λa.λb.a) which is different from manually writing (λf₂.λa.λb.f₂ba) TRUE which yields λa.λb.b.

Am I conceptualizing this incorrectly or is this a bug?

> TRUE
λa.λb.a
<function, church boolean true>
> NAND
λf₁.λf₂.λa.λb.f₁(f₂ba)a
<function>
> NAND TRUE
λf₂.λa.λb.f₂ba
<function>
> NAND TRUE TRUE
λa.λb.a
<function, church boolean true>
> (λf₂.λa.λb.f₂ba) TRUE
λa.λb.b
<function, church numeral 0, church boolean false>
> (NAND TRUE) TRUE
λa.λb.a
<function, church boolean true>
> (λf₂.λa.λb.f₂ba) TRUE
λa.λb.b
<function, church numeral 0, church boolean false>(-)
Free Variables:
Rendered from AST: (λf₂.λa.λb.f₂ba)(λa.λb.a)
Beta-reduced: λa.λb.(λa.λb.a)ba
Eta-reduced: [eta irreducible]
Normal Form: λa.λb.b
Normal As Church Numeral: 0
Normal As Church Boolean: false
steps to normal form:

    (λf₂.λa.λb.f₂ba)(λa.λb.a)
    λa.λb.(λa.λb.a)ba
    λa.λb.(λε₁.b)a
    λa.λb.b

> (NAND TRUE) TRUE
λa.λb.a
<function, church boolean true>
Free Variables:
Rendered from AST: (λf₁.λf₂.λa.λb.f₁(f₂ba)a)(λa.λb.a)(λa.λb.a)
Beta-reduced: [beta irreducible]
Eta-reduced: [eta irreducible]
Normal Form: λa.λb.a
Normal As Church Numeral: [not a church numeral]
Normal As Church Boolean: true
steps to normal form:

    (λf₁.λf₂.λa.λb.f₁(f₂ba)a)(λa.λb.a)(λa.λb.a)
    (λf₂.λa.λb.(λa.λb.a)(f₂ba)a)(λa.λb.a)
    λa.λb.(λa.λb.a)((λa.λb.a)ba)a
    λa.λb.(λε₁.(λa.λb.a)ba)a
    λa.λb.(λε₁.λb.a)ba
    λa.λb.(λε₁.a)a
    λa.λb.a
Ngôn ngữ chính
JavaScript
Star
69
Fork
10
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của evinism/lambda-explorer

Tất cả issue của evinism/lambda-explorer

Issue tương tự

Thêm issue về JavaScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.