Skip to content

Instantly share code, notes, and snippets.

View JanWielemaker's full-sized avatar

Jan Wielemaker JanWielemaker

View GitHub Profile
:- module(fork_client,
[ fork_client/2,
stop_client/1,
run_in_client/2
]).
:- use_module(library(socket)).
fork_client(Address, Stream) :-
tcp_connect(Address, Stream, []).
@JanWielemaker
JanWielemaker / server.pl
Created November 14, 2019 10:51
A statefull HTTP server
:- module(http_statefull_server,
[ server/0
]).
:- use_module(library(http/http_server)).
:- use_module(library(http/http_session)).
:- use_module(library(broadcast)).
:- use_module(library(modules)).
:- use_module(library(debug)).
:- http_handler(root(.), http_redirect(moved, root(home)), []).
% This program reproduces a performance problem with incremental tabling.
:- import incr_asserta/1 from increval.
%:- dynamic facts/1 as incremental,abstract(0).
:- dynamic facts/1 as incremental.
add_facts(N) :-
randset(N, 10 000 000, S),
forall(member(X, S), incr_asserta(facts(X))).
@JanWielemaker
JanWielemaker / swish.yml
Created October 9, 2017 19:29
SWISH docker compose file
version: '2'
services:
swish:
image: swipl/swish
ports:
- "3050:3050"
volumes:
- socket-volume:/rserve
- /home/jan/data/swish:/data
depends_on:
@JanWielemaker
JanWielemaker / findrefs.pl
Created August 15, 2017 14:44
Find references to a predicate
:- use_module(library(prolog_codewalk)).
:- meta_predicate findrefs(:).
:- thread_local hit/1.
findrefs(To) :-
resolve(To, Target),
prolog_walk_code(
[ module_class([user]),
infer_meta_predicates(true),