Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Real world Common Lisp

Name: Anonymous 2011-03-30 13:42

A simple Stardict client1 in python2, 21 lines with comments. How easy would it be to write an equivalent program in Common Lisp? I think Lisp is not suitable for practical problems.

import re, gzip, struct

idx_file = open('/usr/share/stardict/dic/quick_english-italian.idx', 'r').read()
dic = gzip.open('/usr/share/stardict/dic/quick_english-italian.dict.dz', 'r')

idx_re = r"([\w\W]+?)\x00([\w\W]{8})"

index = {word:struct.unpack('>ii', bytes)
          for (word, bytes) in re.findall(idx_re, idx_file)}

def lookup_word(word):
    if word not in index:
        return False
    pos, size = index[word]
    dic.seek(pos)
    result = dic.read(size)
    return result

while True:
    result = lookup_word(raw_input("Enter a word: "))
    print(result or "Word not found")


_________________
1 - https://github.com/xiangfu/stardict/blob/master/doc/StarDictFileFormat
2 - Requires python 2.7

Name: Anonymous 2011-03-30 15:12


(require file/gunzip)

(define-values
  (to-aru-dictionary-no-index-file hax-my-dictionary regexp-my-anus)
  (values
   (open-input-file "tmp222/quick_english-italian.idx")
   (let ((out (open-output-bytes)))
     (call-with-input-file* "tmp222/quick_english-italian.dict.dz"
       (λ (in) (gunzip-through-ports in out)))
     (get-output-bytes out))
   #px#"([\\w\\W]+?)\0([\\w\\W]{8})"))

(define railgun
  (let ((Taro (λ (x) (cons (integer-bytes->integer x #f #t 0 4)
                           (integer-bytes->integer x #f #t 4 8)))))
    (let Christopher ((Xarn '()))
      (cond ((regexp-match regexp-my-anus to-aru-dictionary-no-index-file)
             => (λ (Erika)
                  (Christopher
                   (cons (cons (bytes->string/latin-1 (cadr Erika))
                               (Taro (caddr Erika)))
                         Xarn))))
            (else Xarn)))))

(define (|fukou da| misaka)
  (cond
    ((assoc misaka railgun)
     => (λ (sicp)
          (bytes->string/latin-1
           (subbytes hax-my-dictionary (cadr sicp) (+ (cadr sicp) (cddr sicp))))))))

(|fukou da| "cool")
(|fukou da| "free")
(|fukou da| "ring")
(|fukou da| "tones")

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List