Skip to content

Instantly share code, notes, and snippets.

@fiddlerwoaroof
fiddlerwoaroof / isolate-method.lisp
Created May 21, 2017 07:00
Isolate a Method in a Combined Method
(defmacro methodcall ((name &rest qualifiers-and-args) (&rest arg-values) &body next-function-body)
(let* ((qualifiers (butlast qualifiers-and-args))
(specialized-args (mapcar (lambda (arg) (typecase arg (list arg) (t (list arg t))))
(car (last qualifiers-and-args))))
(args (mapcar #'car specialized-args))
(specializers (mapcar #'cadr specialized-args)))
(alexandria:with-gensyms (method-obj method-fun next-args next-funs)
`(let* ((,method-obj (find-method #',name ',qualifiers ',specializers))
(,method-fun (closer-mop:method-function ,method-obj)))
(funcall ,method-fun (list ,@arg-values)
(defpackage :anonymous-generic-function
(:use :cl :alexandria)
(:export :lambda-generic))
(in-package :anonymous-generic-function)
(defmacro defun-ct (name (&rest args) &body body)
`(eval-when (:load-toplevel :compile-toplevel :execute)
(defun ,name ,args
,@body)))
@fiddlerwoaroof
fiddlerwoaroof / nary.idr
Last active September 30, 2017 05:04
Nary map in Idris
import Data.List
import Data.Vect
total
repeatAndRet : (n : Nat) -> Type -> Type -> Type
repeatAndRet Z argType resultType = resultType
repeatAndRet (S n) argType resultType = argType -> repeatAndRet n argType resultType
total
nary : Nat -> Type-> Type

Keybase proof

I hereby claim:

  • I am fiddlerwoaroof on github.
  • I am fiddlerwoaroof (https://keybase.io/fiddlerwoaroof) on keybase.
  • I have a public key ASAjpoHMAvokBJ0hUrLDdCiYI9w63MumLlgXyWQvTYLOdwo

To claim this, I am signing this object:

@fiddlerwoaroof
fiddlerwoaroof / demo.hs
Created February 27, 2018 00:44
Unit-testing IO in Haskell
module Main where
import Data.IORef
import Data.Time.Clock.POSIX
realIoUnderTest :: IORef Int -> IORef [[Char]] -> IORef Int -> IORef String -> IO ()
realIoUnderTest a b c d = do
b' <- readIORef b
putStrLn $ Prelude.unlines b'
@fiddlerwoaroof
fiddlerwoaroof / zipfile.lisp
Last active July 9, 2018 08:25
Simple zipfile decoding
;; Presupposes the binary parser from fwoar.lisputils/bin-parser: https://github.com/fiddlerwoaroof/fwoar.lisputils/blob/master/bin-parser.lisp
(uiop:define-package :fwoar.zipfile
(:mix :cl :fwoar.lisputils :fwoar.bin-parser)
(:export ))
(in-package :fwoar.zipfile)
(defparameter *zip-local-file-header*
'((signature 4) (version 2) (flags 2) (compression 2 le->int) (mod-time 2) (mod-date 2) (crc-32 4)
(compressed-size 4 le->int)
(defpackage :clos-browser
(:use :clim-lisp :clim)
(:export
#:main))
(in-package :clos-browser)
(define-application-frame class-browser ()
((classes :initarg :classes :reader classes)
(visible-classes :initform nil :accessor visible-classes)
(current-class :initform nil :accessor current-class))
(defpackage :fwoar.mc-web
(:use :cl )
(:export ))
(in-package :fwoar.mc-web)
(defclass myway-server (hunchentoot:acceptor)
((%mapper :initform (myway:make-mapper) :reader mapper)))
(defvar *current-route*)
(define-method-combination routing
(ns oop-with-inheritance)
(defn start [arg]
(println "starting: " arg))
(defn stop [sys]
(println "stopping:" sys))
(defn server-system-local [& args]
(apply println "making server system:" args)
(uiop:define-package :fwoar.zipfile
(:mix :cl :fwoar.lisputils)
(:export ))
(in-package :fwoar.zipfile)
(defun read-bytes (n s)
(with (seq (make-array n :element-type 'serapeum:octet))
(values seq
(read-sequence seq s))))