История изменений
Исправление monk, (текущая версия) :
Ну вот на Racket
get_pid_env
(define (get-pid pid)
(call-with-input-file (format "/proc/~a/environ" pid)
(lambda (f)
(make-hash
(for/list ([line (string-split (port->string f) "\0")])
(match (regexp-match "(.*?)=(.*)" line)
[(list _ a b) (cons a b)]))))))
Второе — просто вызов библиотечной функции. Было бы так:
(define g (directed-graph (for/list ([i 10] [j 10]) (list i j))))
(for ([ij '((1 7) (2 1) (4 4) (7 2) (7 7) (9 4))])
(apply remove-edge g ij))
(define answer (hamiltonian-cycle g #:algorithm 'tsp))
(displayln answer)
Могу и реализацию hamiltonian-cycle переписать. Будет примерно так же, как на питоне.
Встречная просьба: можно код на каком-то из этих языков, который сложно написать на питоне?
Пример сайта на Racket
#lang web-server/insta
; start: request -> response
(define (start request)
((phase-1 0) request))
; phase-1: request -> response
(define ((phase-1 n) request)
(define (response-generator embed/url)
(response/xexpr
`(html
(body (h1 "Phase 1")
(a ((href ,(embed/url (phase-2 (add1 n)))))
,(format "click me! ~a" n))))))
(send/suspend/dispatch response-generator))
; phase-2: request -> response
(define ((phase-2 n) request)
(define (response-generator embed/url)
(response/xexpr
`(html
(body (h1 "Phase 2")
(a ((href ,(embed/url (phase-1 (add1 n)))))
,(format "click me! ~a" n))))))
(send/suspend/dispatch response-generator))
переход между двумя страницами с подсчётом общего числа переходов.
Исходная версия monk, :
Ну вот на Racket
get_pid_env
(define (get-pid pid)
(call-with-input-file (format "/proc/~a/environ" pid)
(lambda (f)
(make-hash
(for/list ([line (string-split (port->string f) "\0")])
(match (regexp-match "(.*?)=(.*)" line)
[(list _ a b) (cons a b)]))))))
Второе — просто вызов библиотечной функции. Было бы так:
(define g (directed-graph (for/list ([i 10] [j 10]) (list i j))))
(for ([ij '((1 7) (2 1) (4 4) (7 2) (7 7) (9 4))])
(apply remove-edge g ij))
(define answer (hamiltonian-cycle g #:algorithm 'tsp))
(displayln answer)
Могу и реализацию hamiltonian-cycle переписать. Будет примерно так же, как на питоне.
Встречная просьба: можно код на каком-то из этих языков, который сложно написать на питоне?
Пример на сайта Racket
#lang web-server/insta
; start: request -> response
(define (start request)
((phase-1 0) request))
; phase-1: request -> response
(define ((phase-1 n) request)
(define (response-generator embed/url)
(response/xexpr
`(html
(body (h1 "Phase 1")
(a ((href ,(embed/url (phase-2 (add1 n)))))
,(format "click me! ~a" n))))))
(send/suspend/dispatch response-generator))
; phase-2: request -> response
(define ((phase-2 n) request)
(define (response-generator embed/url)
(response/xexpr
`(html
(body (h1 "Phase 2")
(a ((href ,(embed/url (phase-1 (add1 n)))))
,(format "click me! ~a" n))))))
(send/suspend/dispatch response-generator))
переход между двумя страницами с подсчётом общего числа переходов.