Skip to content

Instantly share code, notes, and snippets.

View NalaGinrut's full-sized avatar

NalaGinrut

View GitHub Profile
@NalaGinrut
NalaGinrut / yy.scm
Last active August 29, 2015 13:57
yy research code
(define (yy-print fmt . args)
;; if Guile
(apply format #t fmt args)
;; if Racket
;;(apply printf fmt args)
)
(define (inc x)
;; if Guile
(1+ x)
@NalaGinrut
NalaGinrut / multi-assign.scm
Created April 17, 2014 10:08
A macro for multi assign
(define-syntax sets!
(syntax-rules ()
((_ (var) (val))
(set! var val))
((_ (var vars* ...) (val vals* ...))
(let ((var0 val))
(sets! (vars* ...) (vals* ...))
(set! var var0)))))
@NalaGinrut
NalaGinrut / lexer.scm
Last active August 29, 2015 14:02
string lexer
(use-modules (ice-9 rdelim) (rnrs))
(define (k f init val pred)
(if (pred val)
init
(call-with-values (lambda () (f init val))
(lambda (lst rst) (k f lst rst pred)))))
(define (lexer str delimiters)
(define (-> c)
@NalaGinrut
NalaGinrut / 0_reuse_code.js
Created July 3, 2014 03:08
Here are some things you can do with Gists in GistBox.
// Use Gists to store code you would like to remember later on
console.log(window); // log the "window" object to the console
@NalaGinrut
NalaGinrut / morse.scm
Created September 22, 2014 08:47
Morse coding
(use-modules (ice-9 rdelim))(define morse '((#\a ".-")(#\b "-...")(#\c "-.-.")(#\d "-..")(#\e ".")(#\f "..-.")(#\g "--.")(#\h "....")(#\i "..")(#\j ".---")(#\k "-.-")(#\l ".-..")(#\m "--")(\
#\n "-.")(#\o "---")(#\p ".--.")(#\q "--.-")(#\r ".-.")(#\s "...")(#\t "-")(#\u "..-")(#\v "...-")(#\w ".--")(#\x "-.--")(#\y "-.--")(#\z "--..")))(for-each (lambda (x) (if (char-alphabetic\
? x)(display (car (assoc-ref morse x))))(display " "))(string->list (string-downcase (read-line (current-input-port)))))(newline)
@NalaGinrut
NalaGinrut / ft2.scm
Created July 20, 2012 06:05
the shortest snake arrange algorithm
#! /usr/local/bin/guile \
-e main -s
!#
(define (main . args)
(let* ((ll ((@ (srfi srfi-1) iota) (read) 1)) (len (length ll)) (m (1- (/ len 2))))
(display len)(newline)
(let lp((a (list-head ll (1+ m))) (b (list-tail ll (1+ m))) (n 1))
(and (< n len) (for-each (lambda (x y) (display x)(display " ")(display y)(display " ")) a b)(newline)
(lp (append (list 1 (car b)) (cdr a)) (append (cdr b) (list (list-ref a m))) (1+ n))))))
@NalaGinrut
NalaGinrut / ft1.scm
Created July 20, 2012 06:08
the shortest snake arrange algorithm (slow version)
(define (main . args)
(let* ((ll ((@ (srfi srfi-1) iota) (read) 1)) (len (length ll)) (m (1- (/ len 2))))
(display len)(newline)
(let lp((a (list-head ll (1+ m))) (b (list-tail ll (1+ m))) (n 1))
(and (< n len) (for-each (lambda (x y) (display x)(display " ")(display y)(display " ")) a b)(newline)
(lp `(1 ,(car b) ,@(cdr a)) `(,@(cdr b) ,(list-ref a m)) (1+ n))))))
@NalaGinrut
NalaGinrut / wrp.scm
Created July 20, 2012 10:28
weekly report parser
#! /usr/local/bin/guile \
-e main -s
!#
(define main
(lambda args
(let ((wrl (primitive-eval (read))))
(for-each (lambda (x)
(format #t "[~a]:~%" (car x))
@NalaGinrut
NalaGinrut / srfi-28-compiler.scm
Created July 24, 2012 03:03 — forked from ijp/srfi-28-compiler.scm
turn format strings into a procedure
#!r6rs
;; a toy for turning srfi 28 format strings into a procedure, that
;; performs the format, and outputs to stdout
(library (toys srfi-28-compiler)
(export format-string->procedure)
(import (rnrs)
(only (srfi :1 lists) fold)
(srfi :8 receive))
(define (escape-char? char)
@NalaGinrut
NalaGinrut / fix-name.scm
Created August 14, 2012 03:26
patches set name fixing
#! /usr/local/bin/guile \
-e main -s
!#
(use-modules (ice-9 regex) (ice-9 ftw))
(define (sub from to str) (regexp-substitute #f (string-match from str) 'pre to 'post))
(define (usage args) (format #t "~a from to path~%" (car args)))
(define main