LINUX.ORG.RU

История изменений

Исправление 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))

переход между двумя страницами с подсчётом общего числа переходов.