Size: a a a

Сообщество Scheme

2019 August 25

AZ

Aydar Zarifullin in Сообщество Scheme
I Built This Website Using Racket. Here's What I Can Do Now.

https://sagegerard.com/racket-powered.html
источник

PG

Pïg Grëënëst in Сообщество Scheme
источник

P

Paysho in Сообщество Scheme
(define (print-p x1 y1 x2 y2)
 (define (a x1 y1)  (cons x1 y1))
 (define (b x2 y2)  (cons x2 y2))
 (define (AB a b)  (cons a b))
 (print-point  (midpoint-segment AB)))

(define  (midpoint-segment segment)
 (make-point  (average  (x-point (start-point segment))
                                               (x-point (end-point segment)))
                           (average  (y-point (start-point segment))
                                              (y-point (end-point segment)))))
(print-p 0 0 1 1)

mcar: contract violation
 expected: mpair?
 given: #<procedure:.../Documents/3.rkt:50:2>

но пашет при таком вызове

(print-point  (midpoint-segment
                            (make-segment
                                (make-point 0 0)
                                (make-point 1 1)))

Я так понимаю он ругается что AB это мол процедура, но эта процедура возвращающая пару , что я делаю не так?
источник

P

Paysho in Сообщество Scheme
задание 2.2
источник

AZ

Aydar Zarifullin in Сообщество Scheme
Paysho
(define (print-p x1 y1 x2 y2)
 (define (a x1 y1)  (cons x1 y1))
 (define (b x2 y2)  (cons x2 y2))
 (define (AB a b)  (cons a b))
 (print-point  (midpoint-segment AB)))

(define  (midpoint-segment segment)
 (make-point  (average  (x-point (start-point segment))
                                               (x-point (end-point segment)))
                           (average  (y-point (start-point segment))
                                              (y-point (end-point segment)))))
(print-p 0 0 1 1)

mcar: contract violation
 expected: mpair?
 given: #<procedure:.../Documents/3.rkt:50:2>

но пашет при таком вызове

(print-point  (midpoint-segment
                            (make-segment
                                (make-point 0 0)
                                (make-point 1 1)))

Я так понимаю он ругается что AB это мол процедура, но эта процедура возвращающая пару , что я делаю не так?
Ну как минимум оно ожидает mpair а ты обычную передаешь
источник

P

Paysho in Сообщество Scheme
эм а чем она от обычной отличается?
источник

AZ

Aydar Zarifullin in Сообщество Scheme
Paysho
эм а чем она от обычной отличается?
Вот из доки

A mutable pair is like a pair created by cons, but it supports set-mcar! and set-mcdr! mutation operations to change the parts of the mutable pair

mutable pair is not a pair; they are completely separate datatypes
источник

P

Paysho in Сообщество Scheme
ладно щас по доругому попробую
источник

P

Paysho in Сообщество Scheme
не всё равно ругается
источник

P

Paysho in Сообщество Scheme
вя правильно же понял что x-point это mcar?
источник

AZ

Aydar Zarifullin in Сообщество Scheme
Paysho
не всё равно ругается
У тебя AB только в том куске кода используется?
источник

P

Paysho in Сообщество Scheme
да
источник

AZ

Aydar Zarifullin in Сообщество Scheme
Paysho
да
Вот тут
 (print-point  (midpoint-segment AB)))

ты AB передаешь как процедуру
источник

P

Paysho in Сообщество Scheme
ну да так она должна возвращать пару
источник

AZ

Aydar Zarifullin in Сообщество Scheme
Paysho
ну да так она должна возвращать пару
Чтобы она вернула значение ее вообще-то вызвать надо
источник

P

Paysho in Сообщество Scheme
ну дак разве  она не вызывается в (print-point  (midpoint-segment AB)))?
источник

AZ

Aydar Zarifullin in Сообщество Scheme
Paysho
ну дак разве  она не вызывается в (print-point  (midpoint-segment AB)))?
Нет
источник

AZ

Aydar Zarifullin in Сообщество Scheme
AB функция которая принимает два аргумента значит в коде ты должен ее вызывать так (AB аргумент1 аргумент2)
источник

P

Paysho in Сообщество Scheme
ломающие открытие
источник

P

Paysho in Сообщество Scheme
мадаа так заработало
источник