Memoize

BasicWerk   EC Support   Technique   Facebook  

20140615232700_factor_member-if_remove-dup

factor_member-if_remove-dup

 

リスト操作に関してはやっぱり Lisp 風のもののほうが慣れていたりするので。

 
! Copyright (C) 2014 Shin Nakamura.
! See http://factorcode.org/license.txt for BSD license.
USING: 
    kernel sequences fry arrays
    assocs sets
;
IN: my-seq
 
! Lisp like. 見つかった elt を car にしたリストを返す
: member-if ( ... seq quot: ( ... elt -- ... ? ) -- ... subseq )
    over swap find
    drop dup
    [ tail-slice >array ] 
    [ nip ]
    if
; inline
 
! Lisp like. ハッシュではなくリストを返す
! 順序は保証されない
: remove-dup ( seq -- seq' )
    unique values
;
 

 


© Shin Nakamura/BasicWerk 2014