Skip to content

Instantly share code, notes, and snippets.

Hello World!

Wilfred Hughes Wilfred

Hello World!
View GitHub Profile
Wilfred /
Created Jun 23, 2019
MAL equality pharo
= anObject
self isIterable & anObject isIterable
ifTrue: [ ^ value = anObject value ].
self class = anObject class
ifFalse: [ ^ false ].
^ value = anObject value
View segfault_pharo.log
Segmentation fault Tue Sep 5 19:23:15 2017
Pharo VM version: 5.0-201707201942 Thu Jul 20 20:40:54 UTC 2017 gcc 4.6.3 [Production Spur 64-bit VM]
Built from: CoInterpreter VMMaker.oscog-eem.2254 uuid: 4f2c2cce-f4a2-469a-93f1-97ed941df0ad Jul 20 2017
With: StackToRegisterMappingCogit VMMaker.oscog-eem.2252 uuid: 2f3e9b0e-ecd3-4adf-b092-cce2e2587a5c Jul 20 2017
Revision: VM: 201707201942 $ Date: Thu Jul 20 12:42:21 2017 -0700 $ Plugins: 201707201942 $
Build host: Linux testing-gce-74d10329-bbfd-42e5-8995-b0e3a68c73cb 3.13.0-115-generic #162~precise1-Ubuntu SMP Fri Mar 24 16:47:06 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
plugin path: /home/wilfred/Downloads/pharo6.1-64/bin [default: /home/wilfred/Downloads/pharo6.1-64/bin/lib/pharo/5.0-201707201942/]
Wilfred /
Created Aug 27, 2017
pharo conditionals example
whileMatches: aStream do: aBlock
"Execute block, passing in this instance, for every match in stream.
Be extra careful about successful matches which consume no input.
After those, make sure to advance or finish if already at end."
| wholeMatch reachedEnd |
reachedEnd := false.
[ self searchStream: aStream ]
whileTrue: [ wholeMatch := self subexpression: 1.
Wilfred /
Last active Jan 3, 2021
dynamically defined properties in python
def attach_dyn_prop(instance, prop_name, prop_fn):
"""Attach prop_fn to instance with name prop_name.
Assumes that prop_fn takes self as an argument.
class_name = instance.__class__.__name__ + 'Child'
child_class = type(class_name, (instance.__class__,), {prop_name: property(prop_fn)})
Wilfred /
Last active Jan 7, 2020
Native Rust Regular Expressions in Remacs

RFC: Use Rust’s regex crate

We want to port Remacs to use a regex crate implemented in Rust. The Rust implementations are highly optimised, and this would simplify the Remacs codebase.

The two major crates are Rust’s regex crate, and the fancy-regex crate.

Wilfred / dashtest2.el
Last active Aug 10, 2017
function calls vs aliases
View dashtest2.el
;;; dashtest2.el --- benchmarking dash -*- lexical-binding: t -*-
(defun -first-item-fn (lst)
(car lst))
(defalias '-first-item-alias 'car)
(defun wh/benchmark ()
(let ((items (-repeat 20 'foo)))
Wilfred / calculate_3.el
Last active Jun 27, 2017
Exploring programmatically generated elisp with suggest.el
View calculate_3.el
;; given 1, how do we calculate 3?
(length (key-description (char-to-string 1)))
(length (key-description (string 1)))
(1+ (1+ 1))
(length (number-to-string (ftruncate 1)))
(length (number-to-string (fround 1)))
(length (number-to-string (ffloor 1)))
(length (number-to-string (fceiling 1)))
(length (number-to-string (float 1)))
(length (number-to-string (sqrt 1)))
Wilfred / example.el
Created Jun 2, 2017
Confusing Emacs argument parsing with cl-defun
View example.el
(cl-defun wh/foo (arg1 arg2 &key (kwarg1 t))
(list arg1 arg2 kwarg1))
;; We've forgotten arg2, but we get the error:
;; (error "Keyword argument 2 not one of (:kwarg1)")
(wh/foo 1 :kwarg1 2)
;; Instead, it would be clearer to say
;; "Expected a keyword argument (one of (:kwargs1)) but got 1"
Wilfred / remove-props.el
Created Mar 25, 2017
remove text properties
View remove-props.el
;; Loosely based on `erc-remove-text-properties-region'.
(defun wh/remove-text-properties-region ()
"Remove all text properties from the current buffer."
(let ((inhibit-read-only t))
(set-text-properties (point-min) (point-max) nil)))